• docker 镜像的生成方式,初识dockerfile,dockerfile 指定匿名挂载


    十年河东,十年河西,莫欺少年穷

    学无止境,精益求精

    第一种方式:

    docker 本地镜像可通过容器来生成,使用命令 docker commit 

    例如

    docker commit -a "ChenWoLong" -m "myNginx" 0fa75e76671a  mnginx:v.01 

    -a 代表本次生成镜像的作者:ChenWoLong

    -m 本次镜像生成的备注信息

    0fa75e76671a 是容器ID

    mnginx:v.01 中的  mnginx 是生成的镜像名称【镜像名称必须全部小写】,v.01 是镜像版本号,也就是所谓的tag

    执行此命令后,我们查看本地镜像如下:

     测试:

    ROM centos
    MAINTAINER wolong.Chen<chenwolong2022@163.com>
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    VOLUME ["volume01","volume02"]
    CMD echo "------yum vim--------------"
    RUN yum -y install vim
    EXPOSE 80 443
    CMD echo $MYPATH
    CMD echo "-----end----------"
    CMD /bin/bash

     第二种方式:编写dockerfile文件【由脚本生成镜像】,由dockerfile来生成镜像

    1、新建一个文件,名为dockerfile01

    [root@localhost ~]# cd /home
    [root@localhost home]# ls
    chenwolong  dockerfiles  mysql  nginxvolume
    [root@localhost home]# cd dockerfiles
    [root@localhost dockerfiles]# touch dockerfile01
    [root@localhost dockerfiles]# ls
    dockerfile01
    [root@localhost dockerfiles]# vim dockerfile01

    2、编写文件内容为:

    FROM centos
    
    VOLUME ["volume01","volume02"]
    
    CMD echo "--------------build end-----------------"
    
    CMD /bin/bash

    from centos 可以理解为:容器使用 centos 作为基础环境

    volume["",""] 可以理解为:匿名挂载镜像,此时volume01 和 volume02 挂载到主机的路径为默认路径: /var/lib/docker/volumes 目录中

    CMD echo "" 为打印输出

    CMD  /bin/bash 为默认bash

    3、构建镜像

    docker build -f /home/dockerfiles/dockerfile01 -t mydockerimage .

    -f 是指要构建的dockerfile全路径 或 相对路径         -t 生成的镜像名称              注意:最后的 . 不能少

    执行此命令后,输出如下:

    Sending build context to Docker daemon  2.048kB
    Step 1/4 : FROM centos
     ---> 5d0da3dc9764
    Step 2/4 : VOLUME ["volume01","volume02"]
     ---> Running in f8a1b89e3549
    Removing intermediate container f8a1b89e3549
     ---> a42c956d8d3f
    Step 3/4 : CMD echo "--------------build end-----------------"
     ---> Running in 597c01711c85
    Removing intermediate container 597c01711c85
     ---> 8d6bd8273e09
    Step 4/4 : CMD /bin/bash
     ---> Running in fe5a7a1cb407
    Removing intermediate container fe5a7a1cb407
     ---> 38f5719bab58
    Successfully built 38f5719bab58
    Successfully tagged mydockerimage:latest

    命令显示执行成功,那么镜像生成成功

     4、运行刚刚生成的镜像

    docker run -it --name mydockerimages01 38f5719bab58 /bin/bash

    5、容器内查看

    ls -l

     6、查看数据卷的容器内路径对应的本地主机路径

    在容器内 volume01 和 volume02中建两个文件,如下:

    root@7ff053ebd0af /]# cd /volume01
    [root@7ff053ebd0af volume01]# touch 01.txt
    [root@7ff053ebd0af volume01]# cd /volume02
    [root@7ff053ebd0af volume02]# touch 02.txt
    [root@7ff053ebd0af volume02]# vi 02.txt
    [root@7ff053ebd0af volume02]# cat 02.txt
    I iove shaofu
    [root@7ff053ebd0af volume02]# 

    7、退出容器,到本机中查看容器信息,并找到容器映射的路径

    [root@7ff053ebd0af volume02]# exit
    exit
    [root@localhost dockerfiles]# docker ps -a
    CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS                                     NAMES
    7ff053ebd0af   38f5719bab58   "/bin/bash"              11 minutes ago   Exited (0) 12 seconds ago                                             mydockerimages01
    0fa75e76671a   nginx          "/docker-entrypoint.…"   48 minutes ago   Up 48 minutes               0.0.0.0:49157->80/tcp, :::49157->80/tcp   nginx02
    [root@localhost dockerfiles]# docker inspect 7ff053ebd0af

     docker inspect 7ff053ebd0af 信息中的挂载新如下:

     8、查看 volume02 的映射路径:/var/lib/docker/volumes/177b53a05672781ba288ff566397f0291679c402437c8052d151c039f24421e2/_data

    [root@localhost dockerfiles]# ls /var/lib/docker/volumes/177b53a05672781ba288ff566397f0291679c402437c8052d151c039f24421e2/_data
    02.txt
    [root@localhost dockerfiles]# cat /var/lib/docker/volumes/177b53a05672781ba288ff566397f0291679c402437c8052d151c039f24421e2/_data/02.txt
    I iove shaofu

    本地目录中的 02.txt的内容和数据卷volume02一致,都是: I iove shaofu  我爱少妇...哈哈,证明挂载成功,数据共享成功。

  • 相关阅读:
    DRF-serializers.Serializer序列化器
    docker 打包容器和导入
    python 打包exex文件
    python 判断ip是否正确 re学习
    快排
    冒泡排序
    二分法查找
    递归实现斐波那契
    排序算法
    迭代器构造斐波那契数列
  • 原文地址:https://www.cnblogs.com/chenwolong/p/dokfile.html
Copyright © 2020-2023  润新知