美文网首页
第六节、Docker file制作镜像文件

第六节、Docker file制作镜像文件

作者: 妄语莫言 | 来源:发表于2019-04-17 02:58 被阅读0次

    容器镜像文件的制作一般分为两种:
    1、基于运行中容器制作的镜像,如开启一个容器后安装一系列软件包后利用docker commit命令将容器运行中的最上层的可写层(镜像的多层挂载下面层都是只读层)打包形成新的镜像image.
    2、基于Dockerfile制作镜像,一个Dockerfile文件是一个文本文件,里面是一堆指令调用的集合

    Dockerfile Format (语法格式)

    一般分成两种语句注释语句及指令语句,一般不区分大小写,但是约定俗成指令用大写
    指令自上而下依次执行
    制作镜像时先创建专用的工作目录(自定义),然后创建Dockerfile文件,Dockerfile引用的文件都需要放到该工作目录下,也可以创建一个子目录将所有引用文件都放在该子目录下,如果有不需要打包进去的文件,可以创建一个.dockeringore文件(文件排除列表),将不需要打包文件的路径逐行添加到该文件中,这样制作镜像时会自动忽略这些文件
    Dockerfile文件编辑完成后使用docker build命令生成新的镜像打好标签推送到对应的仓库

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              4ab4c602aa5e        2 weeks ago         1.84kB
    nginx               latest              06144b287844        3 weeks ago         109MB
    busybox             latest              e1ddd7948a1c        8 weeks ago         1.16MB
    [root@localhost ~]# cd /
    [root@localhost /]# mkdir mkimages
    [root@localhost /]# cd /mkimages/
    [root@localhost mkimages]# echo "helloworld">>index.html
    [root@localhost mkimages]# vim Dockerfile
    #第一行指定基础镜像,默认下从本地找,再从dockerhub上寻找,标签tag默认是最新latest,也可以用仓库@哈希码的格式
    FROM   busybox:latest
    #添加维护者信息,MAINTAINER(旧版本使用),现在使用标签LABLE
    MAINTAINER "allan<345654857@qq.com>"
    #LABLE  maintainer= "allan<345654857@qq.com>"
    #COPY将宿主机上工作目录中的文件拷贝到容器中对应的目录下
    COPY  index.html   /data/web/html/
    基于以上3行命令可以制作一个最简单的镜像,并打上标签tag
    [root@localhost mkimages]# docker  build  -t  b1test:v1.1  ./
    Sending build context to Docker daemon  3.072kB
    Step 1/3 : FROM busybox:latest
     ---> e1ddd7948a1c
    Step 2/3 : MAINTAINER "allan <345654857@qq.com>"
     ---> Running in 75315e147fd3
    Removing intermediate container 75315e147fd3
     ---> c0555949d74b
    Step 3/3 : COPY index.html /data/web/html/
     ---> 382c7e0f6ce5
    Successfully built 382c7e0f6ce5
    Successfully tagged b1test:v1.1
    [root@localhost mkimages]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    b1test              v1.1                382c7e0f6ce5        17 seconds ago      1.16MB
    hello-world         latest              4ab4c602aa5e        2 weeks ago         1.84kB
    nginx               latest              06144b287844        3 weeks ago         109MB
    busybox             latest              e1ddd7948a1c        8 weeks ago         1.16MB
    #运行一个容器检查镜像可以发现文件已经拷贝到对应目录下
    [root@localhost mkimages]# docker container run --name b1 --rm  b1test:v1.1 cat /data/web/html/index.html
    helloworld
    

    继续添加其他语句

    FROM busybox:latest
    MAINTAINER "allan <345654857@qq.com>"
    #指定镜像的工作目录,ADD命令将软件包拷贝进去
    WORKDIR /usr/local/src/
    #ADD支持URL可以直接网上下载软件包
    ADD nginx-1.15.2.tar.gz ./
    #ADD http://nginx.org/download/nginx-1.15.4.tar.gz   /usr/local/src/
    #镜像指定数据卷
    VOLUME /data/mysql/
    #指定默认暴露的端口,动态绑定宿主机上空闲的端口,运行容器数加参数P可以暴露
    EXPOSE 80/tcp
    
    
    

    相关文章

      网友评论

          本文标题:第六节、Docker file制作镜像文件

          本文链接:https://www.haomeiwen.com/subject/phdloftx.html