• Docker镜像的构成__docker commit


    镜像是容器的基础,每次执行docker run的时候都会制定哪个镜像作为容器运行的基础。在之前的例子中,我们所使用的都来自于Docker Hub的镜像。直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求的时候,我们就需要定制这些镜像。

    镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础层上加一层作为容器运行时的存储层。


    我们定制一个Web服务器为例。

    docker run --name webserver -d -p 80:80 nginx

    以上命令会用nginx镜像启动一个容器,命名为webserver,并且映射了80端口,这样我们可以用浏览器去访问这个nginx服务器。
    然后访问地址。

    试着修改一下nginx的欢迎界面。

    docker exec -it webserver bash
    echo '<h1>My Docker</h1>' > /usr/share/nginx/html/index.html

    我们以交互式终端方式进入webserver 容器,并执行bash命令,也就是获的一个可操作的shell,然后覆盖了nginx下的index.html内容,刷新浏览器。

    我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过docker diff ID | name 查看改动内容。

    容器内容改变了,如果我们希望保存成新的镜像,那么我们可以使用docker commit命令,语法为:

    docker commit 
    --author "update by wt" 
    --message "修改了nginx的主页" 
    webserver  //ID或者名称
    nginx:v2

    其中, --author 是指定修改的作者,而 --message是备注,可以留空。
    docker images 查看新的镜像
    新的镜像定制好之后,我们可以运行这个镜像

    docker run --name newwebserver -d -p 81:80 nginx:v1

    这里我们命令为新的服务newwebserver ,并且映射到81端口。访问在浏览器加端口即可http://192.168.52.133:81,然后获的shell修改nginx欢迎界面即可。

    慎重docker commit,关于为什么慎用,去网上搜索一下。

  • 相关阅读:
    SQL经常使用语法
    【LeetCode】Generate Parentheses 解题报告
    Linux进程间通信(IPC)
    Android菜单menu控件大全
    Android入门常见问题
    c++ struct与class的差别
    hdu 2011 多项式求和
    Android安全机制介绍
    HDOJ 4003 Find Metal Mineral
    HDU 2845 Beans (两次线性dp)
  • 原文地址:https://www.cnblogs.com/wt645631686/p/7390426.html
Copyright © 2020-2023  润新知