通常我们需要将主机中的数据和容器中的数据进行共享
一:使用V命令与容器共享文件
- docker run -v 主机中的文件:容器中的文件 镜像名
docker run -it -v /myDataVollume:/dataContainerVolume centos
我这里启动一个centos的实例:将主机中 myDataVollume 和容器中 dataContainerVolume 文件夹共享,不论是修改主机还是容器文件夹中的数据,两边的数据都会同步
- docker run -v 主机中的文件:容器中的文件:ro 镜像名
在容器中文件后加 :ro ,则容器中文件为只读
docker run -it -v /myDataVollume:/dataContainerVolume:ro centos
- 使用 docker inspect 实例名和可以查看容器实例的相信信息
使用 docker inspect 容器实例名 查看实例详细参数
由于运行是没有指定运行实例名称,所以自动生成的实例名称 nervous_grothendieck
这里采用 docker inspect 实例名 查看详细信息,注意其中有三项参数可以看到容器文件共享的详细信息
其中 RW 为文件是否为只读
二:使用DockerFile添加文件
- 编写DockerFile
#volume tset
FROM centos
VOLUME ["/dataVolumeContainer1","dataVolumeContainer2"]
CMD echo "finashed,-------------success1"
CMD /bin/bash
在容器中添加文件夹 dataVolumeContainer1 和 dataVolumeContainer2
- 构建镜像
docker build -f /mydocker/Dockerfile -t Lee/centos .
-f 指定DockerFile的文件路径 注意最后有一个 '.'
docker images 就可以看到生成的镜像了
我们将生成的centos镜像跑起来就可以在其中看到生成的两个文件夹了
这里我们没有指定主机中与容器对应文件的路径,我们可以使用 docker inspect 实例ID 查看
这里重点说明一个问题:若发现dockers访问挂在目录时不能打开文件夹,则在挂在目录后多加一个参数 --privileged=true 即可
docker run it -v /myDataVolume:/dataVolumeContainer --privileged=true centos