首页 技术 正文
技术 2022年11月21日
0 收藏 624 点赞 4,460 浏览 941 个字

关于 commit

镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础。

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

以下是用来理解镜像构建:

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

以nginx镜像为基础,启动一个容器,命名为webserver 映射80端口

我本地没有nginx镜像,所以显示自动拉取然后创建启动容器。

Ps:我是用的虚拟机,虚拟机ip是上面那个所以这么访问的。如果是本机或者其他请自行转换。

Docker ps 确认下,看容器正跑着呢

接下来对镜像进行操作。

登入这个容器的bash : docker exec -it webserver bash

把网页内容改下:  echo ‘<h1>Hello, Docker!</h1>’ > /usr/share/nginx/html/index.html

改完后记得exit退出容器连接。

刚刚修改了容器的文件,也就是改动了容器的存储层。

接下来要把这次改动的容器状态打包成镜像。也就是把基本镜像启动成容器(此时已经叠加了存储层),然后我们又改变了存储层。现在把目前的这个最新状态再打包成镜像。

docker commit –author “13 xxxxx” webserver nginx:v2

然后看下镜像列表里已经有这个了

docker image ls

然后用这个新镜像 nginx:v2 跑一个容器

docker run –name web2 -d -p 81:80 nginx:v2

Ok上面就是关于commit的基本操作,大体来说就是能把一个活动的容器的当前状态打包成一个镜像,以后可以继续把这个镜像跑起来成一个容器,有点快照的意思。但是切记不要用commit来真正的打包东西,除非是一些保存环境现场啥的特殊需求。因为镜像是分层存储的,这么搞会导致镜像一层一层的非常臃肿,更难受的是,这个会导致黑盒问题。迭代十几个版本之后,每一层做过什么改动光凭几行描述备注或者是docker diff啥的很难搞清楚。打包生成镜像通常正确姿势是用Dockerfile

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,020
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,773
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,851