docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
学习总结
在学习过程中,碰到了docker与宿主机之间文件拷贝的问题,查阅相关资料,进行总结。
从容器里面拷贝文件到宿主机
如果要将文件从容器复制到宿主机,可以执行以下命令:
// docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
docker cp <Container ID>:<Path of file inside the container> <Path in the local machine>
例如:现有一个ID为cff5c18cb586的ubuntu容器,并且要将文件从容器中的路径/usr/src/app/file.txt 复制到本地计算机上的 /home/username/Desktop/folder,则可以使用命令:
docker cp cff5c18cb586:/usr/src/app/file.txt home/username/Desktop/folder/
如果要将文件粘贴到本地计算机的当前目录中,则只需使用命令:
docker cp cff5c18cb586:/usr/src/app/file.txt . (Don’t forget the dot)
如果要将所有文件从容器中的特定文件夹复制到本地计算机中的文件夹,请使用以下命令:
docker cp cff5c18cb586:/usr/src/app/ home/username/Desktop/folder/
从宿主机中拷贝文件到容器
如果要将文件从本地计算机复制到容器,则可以使用以下命令:
// docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
docker cp <Path in the local machine> <Container ID>:<Path of file inside the container>
例如,现有一个ID为cff5c18cb586的ubuntu容器,并且要将文件从本地计算机中的路径/home/username/Desktop/folder/file.txt复制到该容器中的/usr/src/app/中,则可以使用命令:
sudo docker cp /home/username/Desktop/folder/file.txt cff5c18cb586:/usr/src/app/
如果要将所有文件从本地计算机上的文件夹复制到容器中的文件夹,请使用以下命令-
sudo docker cp /home/username/Desktop/folder cff5c18cb586:/usr/src/app/
需要注意的是,不管容器有没有启动,拷贝命令都会生效。
查询容器相关信息
执行命令:
docker ps
出现如下所示内容,其中NAMES字段就是容器名了。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
进入容器内,获取内部运行容器
执行命令:
//以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker exec -it CONTAINER_NAME /bin/bash
补充:
1、使用Docker Attach
可以使用attach命令在Docker容器中访问bash shell。但是你的docker容器必须以/bin/bash启动。
使用以下语法获取Docker容器的shell访问。
sudo docker attach
例如,你的docker容器正在运行,其ID为cff5c18cb586,名称为software-6464688b4c。对attach方法使用以下命令之一。
使用容器ID:$ sudo docker attach cff5c18cb586
使用容器名称:$ sudo docker attach software-6464688b4c
2、使用Docker Exec
如果docker容器不是用/bin/bash命令启动的。那么就不能使用attach命令。
现在,需要使用exec命令在容器中创建bash。确保使用的是Docker版本为1.3之上。
使用以下语法获取Docker容器的shell访问权限。
sudo docker exec -it bash
例如,你的docker容器正在运行,其ID为cff5c18cb586,名称为software-6464688b4c。将以下命令之一与exec方法一起使用。
使用容器ID:$ sudo docker exec -it cff5c18cb586 bash
使用容器名称:$ sudo docker exec -it software-6464688b4c bash
退出容器
执行命令:
exit //容器停止退出
ctrl+P+Q //容器不停止退出