自定义构建docker镜像

创建dockerfile

我们新建一个目录docker_test,然后在这个目录下新建一个dockerfile文件,文件内容如下:

FROM centos
VOLUME ["volume01","volume02"]
CMD echo "......end......"
CMD /bin/bash

这些是dockerfile的命令。

执行docker build命令
接着我们执行docker build命令来构建镜像。

docker build -f dockerfile -t mycentos:v1.1 .

-f:指定要使用的Dockerfile路径
-t:镜像的名字及标签,如mycentos是名称,v1.1是tag。
.号是上下文路径,指镜像构建时打包上传到Docker引擎中的文件的目录,这里的.指当前目录。如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。
注意:这里要确保该目录下除了dockerfile文件,没有其他文件。因为构建会加载当前目录下所有文件,可能会导致磁盘爆满。

执行这个命令后,我们使用docker images就能看到自己构建的镜像了。

# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   19 months ago   13.3kB
mycentos      v1.1      128df84dd1ee   19 months ago   231MB

启动docker镜像
然后使用命令启动mycentos镜像:

docker run -it 128df84dd1ee /bin/bash

启动后,我们进入容器可以看到容器目录:
在这里插入图片描述
容器里面中有volume01,volume02这两个目录。这个是我们在dockerfile文件中定义的两个挂载卷。在这里它们是属于容器内部的。我们可以找到它们对应的宿主机的路径。方法如下:
首先退出容器,执行docker ps命令:

# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS             PORTS     NAMES
344be74fdfad   128df84dd1ee   "/bin/bash"   About an hour ago   Up About an hour             charming_mcclintock

然后执行docker inspect命令:

# docker inspect 344be74fdfad

在这里插入图片描述
这里就能看到volume01,volume02对应的宿主机的路径了。由于这里是匿名挂载,所以这里的路径中有一段名称是随机生成的。
当我们在容器中的volume01目录下创建文件时,发现在宿主机的对应目录下也能看到文件。
这样,我们就构建了一个自己的镜像,并且还实现了数据卷的同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值