Docker - 镜像 - 利用 commit 理解镜像构成

前端之家收集整理的这篇文章主要介绍了Docker - 镜像 - 利用 commit 理解镜像构成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  • 来自@L_404_0@:80,我们会看到默认的 Nginx 欢迎页面

    现在,假设我们非常不喜欢这个欢迎页面,我们希望改成欢迎 Docker 的文字,我们可以使用docker exec命令进入容器,修改内容

    $ (winpty) docker exec -it webserver bash
    root@3729b97e8226:/# echo '

    Hello,Docker!

    ' > /usr/share/Nginx/html/index.html root@3729b97e8226:/# exit exit

    我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff 命令看到具体的改动。

    $ docker diff webserver
    C /root
    A /root/.bash_history
    C /run
    C /usr
    C /usr/share
    C /usr/share/Nginx
    C /usr/share/Nginx/html
    C /usr/share/Nginx/html/index.html
    C /var
    C /var/cache
    C /var/cache/Nginx
    A /var/cache/Nginx/client_temp
    A /var/cache/Nginx/fastcgi_temp
    A /var/cache/Nginx/proxy_temp
    A /var/cache/Nginx/scgi_temp
    A /var/cache/Nginx/uwsgi_temp

    要知道,当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。

    docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
    $ docker commit \
        --author "Tao Wang " \
        --message "修改了默认网页" \
        webserver \
        Nginx:v2
    sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214

    其中 --author 是指定修改的作者,而 --message 则是记录本次修改内容。这点和 git 版本控制相似,不过这里这些信息可以省略留空。

    $ docker image ls Nginx
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    Nginx               v2                  07e334659748        9 seconds ago       181.5 MB
    Nginx               1.11                05a60462f8ba        12 days ago         181.5 MB
    Nginx               latest              e43d811ce2f4        4 weeks ago         181.5 MB```
    

    我们还可以用 docker history 具体查看镜像内的历史记录,如果比较 <a href="/tag/Nginx/" target="_blank" class="keywords">Nginx</a>:latest 的历史记录,我们会发现新增了我们刚刚提交的这一层。
    bash
    $ docker history Nginx:v2
    IMAGE CREATED CREATED BY SIZE COMMENT
    07e334659748 54 seconds ago Nginx -g daemon off; 95 B 修改了默认网页
    e43d811ce2f4 4 weeks ago /bin/sh -c #(nop) CMD ["Nginx" "-g" "daemon 0 B

    4 weeks ago /bin/sh -c #(nop) EXPOSE 443/tcp 80/tcp 0 B 4 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/Nginx/ 22 B 4 weeks ago /bin/sh -c apt-key adv --keyserver hkp://pgp. 58.46 MB 4 weeks ago /bin/sh -c #(nop) ENV Nginx_VERSION=1.11.5-1 0 B 4 weeks ago /bin/sh -c #(nop) MAINTAINER Nginx Docker Ma 0 B 4 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B 4 weeks ago /bin/sh -c #(nop) ADD file:23aa4f893e3288698c 123 MB

    新的镜像定制好后,我们可以来运行这个镜像。:80

    docker run --name web2 -d -p 81:80 Nginx:v2

猜你在找的Docker相关文章