创建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目录下创建文件时,发现在宿主机的对应目录下也能看到文件。
这样,我们就构建了一个自己的镜像,并且还实现了数据卷的同步。