【云原生丶Docker】DockerFile完全指南

这篇具有很好参考价值的文章主要介绍了【云原生丶Docker】DockerFile完全指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DockerFile构建过程

DockerFile 是Docker的一个配置文件,本质上来说它只是一个文本文件,它是用来构建Docker镜像的。DockerFile配置文件中包含了一系列的指令和配置信息,用于描述如何构建镜像以及如何运行容器。通过编写 Dockerfile,我们可以将构建 Docker 镜像的过程自动化,实现应用程序的快速部署和迭代。

【云原生丶Docker】DockerFile完全指南

⭐️ 一个简单的DockerFile文件示例:
 

这个DockerFile文件的释义为:该镜像会在 centos7.2-python3.6.8:latest 基础镜像上安装 nginx,并设置语言环境为 zh_CN.UTF-8。在容器启动后,会自动执行 sh /home/export/App/bin/start.sh 命令启动应用,并通过 sleep 9999999d 命令使容器保持运行状态。

此外,该镜像还声明需要监听的端口为 80 和 8080,供外部访问使用。

# 1.需要使用的基础镜像
FROM centos7.2-python3.6.8:latest

# 2.设置语言
ENV LANG zh_CN.UTF-8

# 4.安装nginx镜像
RUN yum -y install nginx

# 5.应用镜像开放端口,本应用使用了nginx做反向代理,所以只需要开放80端口即可
EXPOSE 80

# 6.应用镜像部署完成后会执行如下命令启动应用
ENTRYPOINT sh /home/export/App/bin/start.sh && sleep 9999999d

⭐️ 构建镜像

DockerFile文件准备完毕后,就可以通过 docker build 命令来构建镜像了。

docker build -f Dockerfile .

【云原生丶Docker】DockerFile完全指南

这里有几点注意事项:

  1. docker build 默认会在当前目录下寻找名为 Dockerfile的文件,我们也可以通过 .f 参数来指定Dockerfile的文件路径和名称。

    docker build -f <Dockerfile path/name> <build context>
    
  2. docker build 命令最后有一个 . 表示的镜像构建上下文 Context 的路径(文件路径),Context的概念不难理解,在Docker的基本架构一文中我们知道Docker 是典型的C/S架构模式,那docker build命令就是把上下文所在路径下的内容打包,并传递给Docker 引擎,Docker 引擎拿到上下文包后,就能够获得构建镜像所需要的文件。

  3. 排除不必要的文件,加快构建速度。在上下文目录里再建立 .dockerignore 文件,排除那些不需要的文件。

DockerFile 的常用指令

【云原生丶Docker】DockerFile完全指南

⭐️ FROM

FROM 指令用于指定一个基础镜像,它就像“地基” 一样,是DockerFile文件的基础,所有的DockerFile文件都由FROM指令开始,那Dockerfile其实就是在基础镜像的基础上进行定制的。

在实际使用中 FROM 指令通常是指定centos、python/java等基础环境镜像。

# 需要使用的基础镜像
FROM centos7.2-python3.6.8:latest

⭐️ ENV

ENV 指令用于设置环境变量,它可以在构建过程中设置容器中的环境变量,这些环境变量可以在容器启动时使用。

语法格式为:

ENV <key> <value>
ENV <key>=<value> 

<key> 表示环境变量的名称,<value> 表示环境变量的值。多个 ENV 指令可以连续使用,也可以在同一条指令中使用空格或等号分隔多个环境变量。

在 Dockerfile 中使用 ENV 指令可以帮助我们在构建过程中设置一些常用的环境变量,例如 PATH、LANG 等。同时,在容器启动时,我们可以通过 $<key> 的方式来获取环境变量的值。

# 设置语言
ENV LANG zh_CN.UTF-8

⭐️ RUN

RUN 指令用于在容器中执行Shell命令或脚本,比如更新系统、安装应用、下载文件等等。

语法格式有如下2种

RUN <command>
RUN ["executable", "param1", "param2"]

<command> 表示要执行的命令或脚本,它可以是 shell 命令或任何可执行文件;["executable", "param1", "param2"] 表示一个数组,数组的第一个元素为要执行的可执行文件,后面的元素为参数。

例如:

RUN yum -y install nginx
RUN ["/bin/bash", "-c", "echo 'Hello, Docker!'"]

第一条命令将在容器中安装 nginx 软件包;第二条命令将在容器中执行 /bin/bash -c “echo ‘Hello, Docker!’” 命令,输出 “Hello, Docker!”。

RUN 指令的一些注意事项

  1. 容器中的命令执行顺序是从上到下,建议将常用的命令放在前面,以减少构建时间。

  2. 如果需要在容器中执行多个命令或脚本,可以使用 \ 符号将它们连接在一起,以便于阅读和维护。命令之间用 && 来连接。

    FROM centos7.2-python3.6.8:latest
    
    RUN apt-get update \
        && apt-get install -y \
           git \
           curl \
           wget
    
  3. 每一条 RUN 指令都会在新的一层镜像中执行,因此我们应该尽可能将多个命令合并为一条 RUN 指令,以减少镜像的层数。

    例如,将上面的两条命令合并为一条:

    RUN yum -y install nginx && /bin/bash -c "echo 'Hello, Docker!'"
    

⭐️ EXPOSE

EXPOSE 指令用于声明容器需要监听的网络端口。在 Dockerfile 中使用 EXPOSE 指令可以帮助我们记录容器需要监听的端口信息,并提供给其他开发人员或运维人员使用。同时,它也可以帮助我们规范化容器的端口定义,以便于管理和维护。

语法格式为:

EXPOSE <port> [<port>/<protocol>...]

<port> 表示需要监听的端口号,<protocol> 表示使用的协议,可以是 tcp 或 udp。

例如:

# 应用镜像开放端口,本应用使用了nginx做反向代理,所以只需要开放80端口即可
EXPOSE 80/tcp

这个命令将声明容器需要监听的端口分别为 80 ,使用的协议为 tcp 。

但是,EXPOSE 指令并不会实际将容器的端口暴露给主机或外部网络,如果需要将容器的端口映射到主机上,需要在运行容器时使用 -p 参数

⭐️ ENTRYPOINT

ENTRYPOINT 指令用于配置容器的入口点,即容器启动后需要执行的命令或脚本。我们通常会应用其来启动WEB应用。

语法格式为:

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

例如:通过 ENTRYPOINT 指定应用镜像部署完成后会执行命令启动应用。

# 应用镜像部署完成后会执行如下命令启动应用
ENTRYPOINT sh /home/export/App/bin/start.sh && sleep 9999999d

🎉 如果喜欢这篇文章,点赞👍 收藏关注 ✅ 哦,创作不易,感谢!😀

【云原生丶Docker】DockerFile完全指南文章来源地址https://www.toymoban.com/news/detail-502353.html

到了这里,关于【云原生丶Docker】DockerFile完全指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】golang使用DockerFile正确食用指南

    大家好 我是寸铁👊 总结了一篇golang使用DockerFile正确食用指南✨ 喜欢的小伙伴可以点点关注 💝 今天寸铁想让编写好的 go 程序在 docker 上面跑,要想实现这样的效果,就需要用到今天的主角: Docker File ,那怎么使用 DockerFile 呢? 那具体怎么做呢?其实很简单,不过网上的博

    2024年03月12日
    浏览(75)
  • 【云原生】Docker镜像的创建 Dockerfile 多阶段构建原理和使用场景

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 (1)首先启动一个镜像,在容器里做修改  docker run -it --name web centos:7 /bin/bash     #启动容器  ​  yum install -y epel-release  #安装epel源  yum install -y nginx         #安装ng

    2024年02月12日
    浏览(55)
  • Docker 进阶指南(上)- 使用Dockerfile自定义镜像

    大家好,我是洋子。上一篇文章《docker 快速入门指南》介绍了Docker的概念,安装Docker方法以及Docker的常用命令,并且在上篇内容当中,我们都是使用 docker pull 命令直接拉取 阿里云 镜像仓库里面提供的官方镜像 比如拉取mysql镜像就使用 docker pull mysql ,拉取centos镜像就使用

    2024年02月11日
    浏览(42)
  • cka/ckad应试指南 从docker到kubernetes完全攻略

    《cka/ckad应试指南 从docker到kubernetes完全攻略》 段超飞 docker 1-安装并配置docker,yum源,docker下载慢 2-基本命令:镜像管理,基本命令,创建容器 3-网络,存储卷,镜像仓库, 4-dockerfile,编排工具 k8s 1-基本定义 vsphere:esxi运行虚拟机,vcenter管理平台,vsphere client连接 k8s:woker运

    2024年02月10日
    浏览(33)
  • 软件测试|深入解析Docker Run命令:创建和启动容器的完全指南

    简介 Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是 docker run ,用于创建和启动容器。本文将详细解析 docker run 命令的用途、参数和示例,帮助您全面掌握创建和启动容器的过程。 docker run 在Docker中,容器是运行应用程序

    2024年02月09日
    浏览(42)
  • [ 云原生 | Docker ] 构建高可用性的 SQL Server:Docker 容器下的主从同步实现指南

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2023年04月15日
    浏览(67)
  • 【云原生】Dockerfile文件详解

    本文主要讲解了dockerfile的使用,在文章的最后加了一个dockerfile实现自制镜像的实战,如果你希望使用docker commit来制作镜像可以参考: 手动构建自己的docker容器镜像实战

    2023年04月15日
    浏览(34)
  • 【云原生 | 15】Dockerfile构建镜像实战

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质作者         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 💊 交流社区 :CSDN云计算交流社区欢迎您的

    2024年02月22日
    浏览(42)
  • 【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

    大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛” ,斩获多项奖项荣誉证书 🔥 各个平台, 秋意临 账号创作者 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入 云社

    2023年04月11日
    浏览(96)
  • 【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署

    大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛” ,斩获多项奖项荣誉证书 🔥 各个平台, 秋意临 账号创作者 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入 云社

    2024年02月03日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包