平常我们搭建容器最重要的是文件管理的保护和使用,一般正常的是用-v映射容器中的文件夹到本地,这样我们可以直接在主机编写文件,没必要再进入容器进行修改
一、单个容器数据卷映射举例:新建一个容器可以映射本地/data/nginx/conf.d到容器中/etc/nginx/conf.d
docker run -d -it -v /data/nginx/conf.d:/etc/nginx/conf.d -p 80:80 --name=nginx nginx /bin/bash
这样可以通过编写本机/data/nginx/conf.d/*.conf实现nginx的使用
二、多个容器共同访问数据卷实现数据的实时同步1、创建nginx01
docker run -d -it -v nginx:/etc/nginx/conf.d -p 81:80 --name=nginx01 nginx /bin/bash
这里的-v nginx:/etc/nginx/conf.d这里的nginx是一个volum卷标名称(nginx前面没有任何路径标识),也可以像上面一样指定一个本地路径,这里单独的nginx用来更好讲解volume数据卷标
用docker volume ls可以查看系统的所有volume卷标
docker volume inspect nginx用来查看详细的nginx卷标信息及主机路径
这样可以通过编写本机"/var/lib/docker/volumes/nginx/_data/*.conf实现nginx的使用
2、创建nginx02容器,挂载mysql01容器中的数据卷
docker run -d -it -p 82:80 --name=nginx02 --volumes-from=nginx01 nginx /bin/bash
可以使用inspect命令来查看nginx02的卷标挂载位置可以看到和nginx01一样
docker inspect nginx02
3、这样我们进入/var/lib/docker/volumes/nginx/_data,创建一个song.conf可以同时同步到nginx01和nginx02
可以看到不管是nginx01,nginx02还是主机更新的文件都可以在容器中更新
三、写一个简单的Dockerfile来时间卷标管理1、编写一个简单的Dockerfile文件
vim Dockerfile (构建指令可以参考博客dockers章节 )
FROM nginx
MAINTAINER usersong
VOLUME ["/etc/nginx/conf.d"]
CMD echo "----end---"
CMD /bin/bash
2、运行Dockerfile文件
通过docker build -f Dockerfile -t nginx:v1 .来运行dockerfile,-t指定镜像名称和版本,记得后面有一个"." dockerfile构建过程就是上面写的4部
这个就是我们用dockerfile自己创建的一个容器nginx:v1
3、开始用编写的镜像创建容器,并查看容器的mounts信息,这样可以实现提前构建好volume卷标信息
docker run -d -it -p 81:80 --name=nginx01 nginx:v1 /bin/bash
docker run -d -it -p 82:80 --name=nginx02 nginx:v1 /bin/bash
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)