开发者学堂课程【深入解析 Docker 容器化技术:容器与宿主机间文件相互拷贝】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/659/detail/10944
容器与宿主机间文件相互拷贝
容器与宿主机间文件相互拷贝
接下来进行容器的其他操作讲解,如容器与宿主机的文件相互拷贝,下面画图进行说明:
比如在宿主机 centos 上创建容器 c1,如果想将宿主机上的1.txt 文件复制到容器 c1,可以使用 docker cp 命令,或者另外一种可能将容器 c1的2.txt 文件拷贝到宿主机上,如图:
那么如果需要将文件拷贝到容器可以使用 cp 命令,命令为 docker cp 指定需要拷贝的文件或者目录,再空格指定要将文件拷贝到的目的容器名称以及那个容器目录下。反过来将文件从容器内拷贝出来,则为 docker cp 加上容器名称,容器目录,以及目录下的文件,和需要拷贝到宿主机的那个目录下,下面进行命令演示。
因为之前讲解时本机上面已经没有容器了,所以首先要创建一个容器,如:
[root@localhost ~]# docker run -itd --name=c1 centos /bin/bash
g5adc191b4bf78504 Scaae5bc3cf a3d3cd2 5c2ff597 257 8f 24baa39037b5d353
创建 c1后进行查看,如:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CR… NAMES
c5adc191b4bf centos "/bin… 2 seconds ago… c1
说明创建成功。然后在 c1容器下创建1.txt 文件,如:
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ll
total 12
-rw-r--r--. 1 root 0 Sep 18 22:35 1.txt
…
此时进入容器中,可以看到 c1容器的 root 目录下什么都没有,如:
[root@localhost ~]# docker exec -it /c1/bin/bash
[root@c5adc191b4bf ~]# cd root/
[root@c5adc191b4bf ~]# ll
total 4
-rw-------. 1 root 3415 Aug 1 01:10 anaconda-ks.cfg
接下来再拷贝1.txt 文件到容器 c1的 root 目录,如:
[root@localhost ~]# docker cp 1.txt c1:/root
回到容器中再查看 root 下的文件会发现出现1.txt 文件,如:
[root@c5adc191b4bf ~]# ll
total 4
-rw-r--r--. 1 root 0 Sep 19 05:35 1.txt
-rw-------. 1 root 3415 Aug 1 01:10 anaconda-ks.cfg
说明文件拷贝成功。那么从容器拷贝到宿主机也是可以的,首先要做容器 c1下创建文件2.txt,如:
[root@c5adc191b4bf ~]# touch 2.txt
[root@c5adc191b4bf ~]# ll
total 4
-rw-r--r--. 1 root 0 Sep 19 05:35 1.txt
-rw-r--r--. 1 root 0 Sep 19 05:36 2.txt
……
此时2.txt 创建成功。然后将c1容器的root目录下2.txt 文件拷贝到宿主机 root 目录下,如:
[root@localhost ~]# docker cp c1:/root/2.txt /root
然后再查看宿主机的全部文件,如:
[root@localhost ~]# ll
total 12
…
-rw-r--r--. 1 root 0 Sep 18 22:36 2.txt
…
可以查看到2.txt 文件,说明拷贝成功。以上就是容器与宿主机间文件相互拷贝的讲解内容。
