Docker-commit
- 之前理解了镜像是分层构成后,并且我们修改了我们的nginx的index页面,如果想把这个nginx镜像保存下来供其他人使用,那么我们就需要进行“保护现场”,这也是commit命令的作用
-
我们先来看一下我的机子上有那些容器
[qidai@qidai-pc ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5c597a4f124 nginx "nginx -g 'daemon of…" 26 hours ago Exited (0) 23 hours ago webnginx 76110444b847 91dadee7afee "docker-entrypoint.s…" 3 days ago Exited (0) 2 days ago my-test-mysql
-
我们更改后webnginx后现在进行保存
[qidai@qidai-pc ~]$ docker commit --author "qidai" --message "change webnginx index.html" webnginx nginx:v1 sha256:ca9ac899159eefe41cf30771cc2f4e23db967d6e2f3d0725226495296b69cb76
-
--author
:指定作者 -
--message
:备注信息 - 再之后是指定保存的哪个镜像,然后紧接着是保存后的名字和版本
-
-
保存后我们在来看一下本地image
[qidai@qidai-pc ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 ca9ac899159e 3 minutes ago 109MB nginx latest 881bd08c0b08 4 days ago 109MB ubuntu latest 47b19964fb50 4 weeks ago 88.1MB centos latest 1e1148e4cc2c 3 months ago 202MB
-
会多出来一个nginx:v1镜像,我们把它run起来
[qidai@qidai-pc ~]$ docker run --rm -d -p 80:80 nginx:v1 1c494ae39be7666f1c3249054b5657b24bebe192009761d1063e424f601bb672 [qidai@qidai-pc ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c494ae39be7 nginx:v1 "nginx -g 'daemon of…" 9 seconds ago Up 7 seconds 0.0.0.0:80->80/tcp recursing_zhukovsky
- 这个时候再次访问 localhost就会直接出现我们修改后的index页面信息
-
虽然commit可以为我们定制镜像,但还是要 慎用 原因如下
- commit后其实就是将nginx与base image打到一个包中了,那么只有你自己知道你的镜像发生了什么,而对于别人来说完全是一个黑箱
- 之前提到的分层概念,我们nginx修改只修改了当前层,如果进行commit,别人使用你的这个镜像的时候就会在nginx层在继续添加自己的层,会使得镜像越来越臃肿
- 我们也注意到启动nginx服务并不是只更改了index页面,而是对应的cache都会发生改变,如果在发生编译安装将会安装更多依赖库,commit后让他们成为了一体,这样也会使得镜像更加臃肿
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker-理解镜像构成
我们之前就了解到了,docker的镜像并非是一个整体镜像,而是一个分层存储,每一层都是在前一层的基础上进行的修改,而容器也是这样的,是多层存储的 我们现在来启动一个镜像 $ docker run --name webnginx -d -p 80:80 nginx -p:表示将容器内的80端口映射到物理机的80端口 -d:后台运行 当运行起来后,我们浏览器访问 localhost,会看到nginx的标志 到这我们是对刚拉下来的镜像我们没有任何的修改,现在我们将对nginx的欢迎界面进行初始化 docker进入容器更改nginx配置文件 $ docker exec -it webnginx bash $ root@b5c597a4f124:/# echo '<h1>HELLO DOCKER<h1/>' > /usr/share/nginx/html/index.html $ docker restart webnginx 再次访问localhost,会看到我们更改后的信息 到这我们就已经开始更改了容器内的/usr/share/nginx/html/index....
- 下一篇
Docker-Dockerfile入门 - 1
之前说的commit操作会带来各种不好的结果,那么解决办法就是使用Dockerfile来解决这个问题 commit操作不会记录每层的构建过程,而Dockerfile则是记录了每层是如何构建的,那么我们可以通过观察Dockerfile的内容来知道镜像是如何的构建的,达到了镜像透明的目的,并且我们还可以自由的删除Dockerfile中的不需要的构建步骤,来解决镜像臃肿的问题 Dockerfile就是一个文本文件,里面是一条条命令,来指导Docker如何构建我们需要的镜像,比如我们来构建一个index页面为:“welcome Docker”的nginx服务镜像 我们需要先删除之前的nginx:v1,当然不删除也可以,无关紧要 [qidai@qidai-pc docker-file]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 ca9ac899159e 4 hours ago 109MB nginx latest 881bd08c0b08 4 days ago 109MB ubuntu latest 47b19964...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境