Docker学习笔记(二)——文件复制,commit,数据卷

目录

 

文件复制命令(docker cp ):

docker commit 命令

docker容器数据卷(持久化)

数据卷新建命令:

通过docfile新建数据卷并构建镜像

根据dockerfile生成镜像

运行镜像

数据集容器


文件复制命令(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)
  1. 在myDataHost和MyContainer两个目录里的任意一个新建文件,另一个目录里都会出现。
  2. 当容器停止后,在宿主机的目录myDataHost里,修改(新建)文件,当容器启动后,会自动同步文件。
  3. 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

结论:

  1. layman02和layman03均挂载于layman01上,他们之间的数据通过VolumeTest进行共享

  2. 即便layman01容器停止或者被删除,layman02和layman03的数据仍然可以共享

猜你喜欢

转载自blog.csdn.net/single_0910/article/details/113503870
今日推荐