欢迎来到站长天空!

其它服务器

当前位置: 主页 > 服务器 > 其它服务器

Dockerfile文件详细介绍

时间:2025-12-13 12:30:04|栏目:其它服务器|点击:

目录
  • 一. dockerfile的介绍
    • 1.1 关于dockerfile
    • 1.2 dockerfile文件的组成部分
    • 1.3 dockerfile的执行
  • 二. docker bulid 命令的介绍
    • 三. 使用dockerfile构建镜像实战
      • 总结

        一. dockerfile的介绍

        1.1 关于dockerfile

        官网中的介绍: Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image。

        Dockerfile 是一个文本文件,里面包含组装新镜像时用到的基础镜像和各种指令。

        使用dockerfile 文件来定义镜像,然后运行镜像,启动容器。

        1.2 dockerfile文件的组成部分

        一个dockerfile文件包含以下部分:

        • 基础镜像信息: 使用FROM关键字指定基础镜像信息,FROM是dockerfile文件的第一条指令。
        • 维护者信息: 使用MAINTAINER关键字指定,通常可以使用dockerfile文件创建者的名字或者邮件作为维护者的信息。
        • 镜像操作指令: 没执行一条镜像操作指令,都会在镜像中添加新的一层。
        • 容器启动执行命令: 用户指定在启动容器时需要执行的命令,通过:CMD ENTRYPOINT指定

        常见的镜像操作指令:

        指令 描述
        FROM # 基础镜像,一切从这里开始构建
        MAINTAINER 镜像是谁写的,姓名+邮箱
        RUN 镜像构建的时候需要运行的命令
        ADD 添加内容: 比如加一个tomcat压缩包
        WORKDIR 镜像的工作目录
        VOLUME 镜像挂载的目录
        EXPOSE 保留暴露的端口
        CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可以被代替
        ENTRYPOINT 指定这个容器启动的时候需要运行的命令,可以追加命令
        ONBUILD 当构建一个被继承DockerFile 的时候就会运行 ONBUILD 的指令。触发指令
        COPY 类似ADD ,将我们的文件拷贝到镜像中
        ENV 构建的时候设置环境变量

        1.3 dockerfile的执行

        在完成dockerfile文件的编写后,执行docker build命令,则会根据dockerfile文件中上下文的内容构建新的docker镜像。

        整个构建过程会被递归处理,如果在dockerfile中包含了路径或者URL,都会被递归构建。

        二. docker bulid 命令的介绍

        docker build 命令用于使用 Dockerfile 创建镜像

        语法:

        docker build [OPTIONS] PATH | URL | -
        

        常用参数:

        参数 解释
        –build-arg=[] 设置镜像创建时的变量;
        –cpu-shares 设置 cpu 使用权重;
        –cpu-period 限制 CPU CFS周期;
        –cpu-quota 限制 CPU CFS配额;
        –cpuset-cpus 指定使用的CPU id;
        –cpuset-mems 指定使用的内存 id;
        –disable-content-trust 忽略校验,默认开启;
        -f 指定要使用的Dockerfile路径;
        –force-rm 设置镜像过程中删除中间容器;
        –isolation 使用容器隔离技术;
        –label=[] 设置镜像使用的元数据;
        -m 设置内存最大值;
        –memory-swap 设置Swap的最大值为内存+swap,"-1"表示不限swap;
        –no-cache 创建镜像的过程不使用缓存;
        –pull 尝试去更新镜像的新版本;
        –quiet, -q 安静模式,成功后只输出镜像 ID;
        –rm 设置镜像成功后删除中间容器;
        –shm-size 设置/dev/shm的大小,默认值是64M;
        –ulimit Ulimit配置。
        –squash 将 Dockerfile 中所有的操作压缩为一层。
        –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
        –network: 默认 default。在构建期间设置RUN指令的网络模式

        三. 使用dockerfile构建镜像实战

        编写一个简单的centos镜像

        在本地创建一个文件名为Dockerfile的文件

        • 代码如下
        FROM centos:7.9.2009
        # 指定基础镜像为 centos
        MAINTAINER  mufenggrow mufenggrow@163.com
        ENV  MYPATH  /usr/local
        WORKDIR $MYPATH
        
        RUN yum -y install vim
        RUN yum -y install net-tools
        
        EXPOSE  80
         
        CMD echo $MYPATH
        CMD echo "-----end-----"
        CMD /bin/bash
        
        
        
        • 构建并测试
          通过命令构建镜像 最后有个 .语法如下:

         docker build -f dockerfile 文件名 -t 镜像名:[tag] .

        测试:

        因为最开始我们创建的文件名叫Dockerfile所以,不需要使用-f 参数

        [root@mufenggrow ~]# ls
        anaconda-ks.cfg  Dockerfile 
        
        [root@mufenggrow ~]# docker build -t mufeng_centos .
        
        [root@mufenggrow ~]# docker images
        REPOSITORY      TAG        IMAGE ID       CREATED         SIZE
        mufeng_centos   latest     5233b48a8b4e   9 seconds ago   667MB
        centos          7.9.2009   eeb6ee3f44bd   19 months ago   204MB
        
        
        • 启动测试,查看是否有ifconfig命令
        [root@mufenggrow ~]# ls
        anaconda-ks.cfg  Dockerfile  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
        [root@mufenggrow ~]# docker run -itd mufeng_centos /bin/bash
        0801e25a61e5999b1616d1f0073f39a7e5431e34d983445b3f349b7da6bf3fe6
        [root@mufenggrow ~]# docker exec -it 0801e25a /bin/bash
        [root@0801e25a61e5 local]# pwd
        /usr/local
        [root@0801e25a61e5 local]# ifconfig
        eth0: flags=4163  mtu 1500
                inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
                ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
                RX packets 8  bytes 656 (656.0 B)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 0  bytes 0 (0.0 B)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
        lo: flags=73  mtu 65536
                inet 127.0.0.1  netmask 255.0.0.0
                loop  txqueuelen 1000  (Local Loopback)
                RX packets 0  bytes 0 (0.0 B)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 0  bytes 0 (0.0 B)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
        

        总结

        上一篇:docker容器中文乱码的解决方法

        栏    目:其它服务器

        下一篇:使用Maven打包构建Docker镜像并推送到仓库

        本文标题:Dockerfile文件详细介绍

        本文地址:https://zz.feitang.co/server/30557.html

        广告投放 | 联系我们 | 版权申明

        申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

        如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

        联系QQ:257218569 | 邮箱:257218569@qq.com

        Copyright © 2018-2025 站长天空 版权所有 Powered by EyouCms冀ICP备14023439号