目录
文件复制命令(docker cp ):
# afaae4d91c78:容器id
# /usr/tmp/haha.txt:要拷贝的容器文件路径
# /root:宿主机目录
docker cp afaae4d91c78:/usr/tmp/haha.txt /root
docker commit 命令
docker commit -a "[email protected]" -m "测试镜像提交" 24c67251eb1b alpine:test
docker容器数据卷(持久化)
数据卷新建命令:
--如果没有该目录,则会自动新建该目录
docker run -it --name "centos" -v /myDataHost:/MyContainer 300e315adb2f #默认为读写权限
docker run -it --name "centos" -v /myDataHost:/MyContainer:ro 300e315adb2f #修改容器为只读权限(read-only)
- 在myDataHost和MyContainer两个目录里的任意一个新建文件,另一个目录里都会出现。
- 当容器停止后,在宿主机的目录myDataHost里,修改(新建)文件,当容器启动后,会自动同步文件。
- docker的数据集给我的感觉,就像是windows系统的共享文件夹
通过docfile新建数据卷并构建镜像
Dockerfile是Docker 镜像的描述文件,其内部包含了一条条的指令,每一条指令构建一层,每一条指令的内容,就是描述该层应当如何构建。每条指令按顺序依次执行
# my dockfile test
FROM centos
# 多个数据集用,分割
VOLUME ["/VolumeTest"]
CMD echo "oh,my--baby~"
CMD /bin/bash
根据dockerfile生成镜像
# -f 指定dockefile路径,默认是'PATH/Dockerfile'
# -t 指定镜像的名称和表情 name:tag
# . 镜像构建时打包上传到Docker引擎中的文件目录,不是本机目录
docker build -f /usr/local/layman/dockerfile -t centos:layman .
运行镜像
数据集容器
# --volumes-from:指定从那个容器挂载
docker run -it --name="layman02" --volumes-from layman01 9f8f3b88c6be
docker run -it --name="layman03" --volumes-from layman01 9f8f3b88c6be
结论:
-
layman02和layman03均挂载于layman01上,他们之间的数据通过VolumeTest进行共享
-
即便layman01容器停止或者被删除,layman02和layman03的数据仍然可以共享