CentOS7环境下Docker制作镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改:
(1)从已经创建的容器中更新镜像,并且提交这个镜像
(2)使用Dockerfile指令来创建一个新的镜像
1 基于容器制作镜像
Options 参数
-a,作者(例如,“along along@along.com”)
-c,修改Dockerfile指令应用于创建的镜像
-m,提交的描述信息,即记录本次修改的内容
-p,在提交期间暂停容器(默认为true)
1)示例1:简单的基于容器创建一个新的镜像
A.先运行一个容器
[root@localhost ~]# docker run --name b1 -it busybox
/ # ls /
bin dev etc home proc root sys tmp usr var
/ # mkdir -p /data/html
/ # echo busybox httpd server >/data/html/index.html
/ # cat /data/html/index.html
busybox httpd server
B.不用退出这个容器,另起终端在b1容器基础上,制作新镜像
保存镜像:
[root@localhost ~]# docker commit -p b1
C.给新制作的镜像打标签
[root@localhost ~]# docker tag 5d6 along/httpd:v0.1
D.删除同一镜像的标签,只是把这个镜像的标签去掉,直到删除这个镜像的最后一个标签,此镜像才会被删除。
[root@localhost ~]# docker image rm along/httpd:latest
E.基于新的镜像运行一个容器,验证是否是基于b1创建成功的
[root@localhost ~]# docker run --name b2 -it --rm along/httpd:v0.1
/ # cat /data/html/index.html
busybox httpd server
2)示例2:基于容器创建新的镜像,并修改执行命令CMD
A.基于容器b1创建新的镜像,并修改命令为执行httpd服务
[root@localhost ~]# docker commit -a "Along <along@along.com>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 along/httpd:v0.2
B.运行新的镜像v0.2
[root@localhost ~]# docker run --name b3 -d along/httpd:v0.2
C. 验证
[root@localhost ~]# docker inspect b3 | grep -i ipaddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAddress": "172.17.0.3",
[root@localhost ~]# curl 172.17.0.3
busybox httpd server
2 基于Dockerfile制作镜像
- 创建一个名为“Dockerfile”的文件
注意,文件名必须是“Dockerfile”,“D”是大写字母。
[root@server ~]# mkdir /myimg
[root@server~]# cd /myimg/
[root@server myimg]# vim Dokerfile
[root@server myimg]# cat Dokerfile
#This is a demo Image
FROM ubuntu
MAINTAINER root@server.com
RUN apt-get update
CMD [“echo”, “Image created”]
第一行#This is a demo Image 是一条注释。Dockerfile 中注释以#开头。
下一行需以 FROM 关键字开始。构建自己的镜像时,通常以其他镜像为基础。FROM ubuntu 表示将以 ubuntu 镜像为基础创建一个镜像。
MAINTAINER root@server.com 指明镜像维护者。
RUN 指令用于执行命令。这里更新 ubuntu 系统。
最后一个指令向用户显示一条消息。
2 创建镜像----docker build 命令用于从 Dockerfile 构建镜像
典型用法:docker build -t ImageName:TagName dir
[root@kittod myimg]# docker build -t myimg:0.1 .
查看定制的镜像
[root@server myimg]# docker images
运行定制镜像
[root@server myimg]# docker run myimg:0.1
Dockerfile指令:https://www.runoob.com/docker/docker-dockerfile.html
-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!