欢迎来到ChAn的博客

光終會灑在小陳身上,小陳也會燦爛一場
扩大
缩小

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制作镜像

  1. 创建一个名为“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

posted on 2022-09-15 01:00  ChAnAn  阅读(313)  评论(0编辑  收藏  举报

导航