本文收录在
本篇主要详细讲解基于容器制作镜像;基于dockerfile 制作镜像在后一张文章docker系列07—dockerfile 详解中详细介绍;
docker commit
(1)格式
usage: docker commit [options] container [repository[:tag]]
(2)options 参数
(3)示例1:简单的基于容器创建一个新的镜像
① 先运行一个容器
[root@along ~]# docker run --name b1 -it busybox
/ # ls /
bin dev etc home proc root sys tmp usr var
/ # mkdir -p /date/html
/ # echo "<h1>busybox httpd server</h1>" > /date/html/
/ # cat /date/html/
<h1>busybox httpd server</h1>
② 不用退出这个容器,另起终端在b1容器基础上,制作新镜像
[root@along ~]# docker commit -p b1
sha256:3a6523b08bea7eb339ae04cc8a98caabfd46fbd27ccf31409cc3e8a764effdc1
[root@along ~]# docker image ls
repository tag image id created size
<none> <none> bf29b97ba38d 7 seconds ago 1.15 mb
③ 给新制作的镜像打标签
[root@along ~]# docker tag bf29b97ba38d along/httpd:v0.1
[root@along ~]# docker image ls
repository tag image id created size
along/httpd v0.1 bf29b97ba38d 39 seconds ago 1.15 mb
④ 可以对同一个镜像,再打标签
[root@along ~]# docker tag along/httpd:v0.1 along/httpd:latest
[root@along ~]# docker image ls
repository tag image id created size
along/httpd latest bf29b97ba38d about a minute ago 1.15 mb
along/httpd v0.1 bf29b97ba38d about a minute ago 1.15 mb
⑤ 删除同一镜像的标签,只是把这个镜像的标签去掉,只到删除这个镜像的最后一个标签,此镜像才会被删除
[root@along ~]# docker image rmi along/httpd:latest
untagged: along/httpd:latest
[root@along ~]# docker image ls
repository tag image id created size
along/httpd v0.1 bf29b97ba38d about a minute ago 1.15 mb
⑥ 基于新的镜像运行一个容器,验证是否是基于b1创建成功的
[root@along ~]# docker run --name b2 -it along/httpd:v0.1
/ # cat /date/html/
<h1>busybox httpd server</h1>
/ # exit
(4)示例2:基于容器创建新的镜像,并修改执行命令cmd
① 基于容器b1创建新的镜像,并修改命令为执行httpd服务
[root@along ~]# docker commit -a "along <along@along.com>" -c 'cmd ["/bin/httpd","-f","-h","/date/html"]' -p b1 along/httpd:v0.2
sha256:2291d0e5800e53e120fad58043e97cbf8197f7db2aa1111508603fa3c16982f2
注解:busybox 中httpd 语法
② 运行新的镜像v0.2
[root@along ~]# docker run --name b3 -d along/httpd:v0.2
43e8731be7abd34a9b332c84bc622a1ef8707dc94465d3639db194c0b504cc42
③ 验证成功
[root@along ~]# docker inspect b3 |grep "ipaddress"
"secondaryipaddresses": null,
"ipaddress": "172.17.0.3",
"ipaddress": "172.17.0.3"
[root@along ~]# curl 172.17.0.3
<h1>busybox httpd server</h1>
(1)repository
(2)index
docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
例:docker pull quay.io/coreos/flannel:v0.10.0-amd64
(1)可以在docker hub上创建;但注册docker hub需要科学上网;
(2)也可以在阿里云上创建自己的docker仓库
① 创建镜像仓库
② 选择创建本地仓库
③ 点击管理,会有操作指南,大家跟着操作即可,这里我就不再演示了
本文用的是docker hub
[root@along ~]# docker login -u alongedu
password:
login succeeded
[root@along ~]# docker tag busybox:latest alongedu/httpd:v0.1
[root@along ~]# docker push alongedu/httpd:v0.1
the push refers to a repository [docker.io/alongedu/httpd]
23bc2b70b201: pushed
v0.1: digest: sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe size: 527
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论