验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Dockerfile文件有哪些命令

阅读:1136 来源:乙速云 作者:代码code

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;
      –ulimitUlimit配置。
      –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
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>