将文件从Docker容器复制到主机
详细说明及使用可参考官方docker cp文档
说明
在容器和本地文件系统之间复制文件/文件夹
用法
$ docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- $ docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
例如,docker正在运行了一个jenkins,CONTAINER ID为3a3d34f3a3c0,接下来以此容器做展示:
| CONTAINER ID | IMAGE | 其他略 | NAMES |
| 3a3d34f3a3c0 | docker.io/jenkins/jenkins:lts | 其他略 | jenkins |
注:以下命令中使用 CONTAINER ID 的地方也可用 NAMES 代替
容器到主机
将文件或文件夹从Docker容器复制到本地文件系统。
重要:此种有两种情况需要区分,第一种你在主机,第二种你已经进入了docker jenkins容器中
第一种:在主机
将jenkins容器中 /var/jenkins_home/project1 目录拷贝到主机的 /srv/jenkins $ docker cp 3a3d34f3a3c0:/var/jenkins_home/project1 /srv/jenkins # 将jenkins容器中 /var/jenkins_home/project1 目录中 README.md 文件拷贝到主机的 /srv/jenkins $ docker cp 3a3d34f3a3c0:/var/jenkins_home/project1/README.md /srv/jenkins # 将jenkins容器中 /var/jenkins_home/project1/build 目录中所有文件拷贝到主机的 /srv/jenkins/www $ docker cp 3a3d34f3a3c0:/var/jenkins_home/project1/build/. /srv/jenkins/www # 将jenkins容器中 /var/jenkins_home/project1/build 目录中 README.md 文件拷贝到当前本地工作目录 $ docker cp 3a3d34f3a3c0:/var/jenkins_home/project1/build/README.md .
如果容器中不存在复制的目录或文件,则报错
第二种:已经进入了docker jenkins容器中(docker exec -it “3a3d34f3a3c0” bash)
将jenkins容器中/var/jenkins_home/workspace/project2/build中所有文件拷贝到主机的/srv/www中
前置环境变量:
$ export JENKINS_HOME=/srv/jenkins $ export NGINX_WWW=/srv/www
需要借助docker run –volume,docker jenkins启动命令需要改成:
$ docker run --name jenkins -u root -d -p 7199:8080 -p 50000:50000 -v $JENKINS_HOME:/var/jenkins_home -v $NGINX_WWW:/srv/www docker.io/jenkins/jenkins:lts
重要:额外增加了一个参数
最后,直接执行即可 ```js $ cp -rf /var/jenkins_home/workspace/project2/build/. /srv/www/
解决docker exec -it提示 no such container的问题 原创
运维灬小兵2022-06-28 18:26:58博主文章分类:Docker
Docker exec 出现 “fork/exec /proc/self/exe: no such file or directory” 问题
可以通过nsenter进入
# docker inspect -f {{.State.Pid}} 容器ID
6670
# nsenter -t 6670 -m -u -i -n -p
主机到容器
将文件或文件夹从本地文件系统复制到Docker容器,其工作原理相同
# 将主机的 /srv/jenkins 拷贝到jenkins容器中 /var/jenkins_home/project1 目录 $ docker cp /srv/jenkins 3a3d34f3a3c0:/var/jenkins_home/project1 # 将主机的 /srv/jenkins 目录中 README.md 拷贝到jenkins容器中 /var/jenkins_home/project1文件 $ docker cp /srv/jenkins/README.md 3a3d34f3a3c0:/var/jenkins_home/project1 # 将主机的 /srv/jenkins/www 中所有文件拷贝到jenkins容器中 /var/jenkins_home/project1/build 目录 $ docker cp /srv/jenkins/www/. 3a3d34f3a3c0:/var/jenkins_home/project1/build # 将当前本地工作目录拷贝到jenkins容器中 /var/jenkins_home/project1/build 目录中 $ docker cp . 3a3d34f3a3c0:/var/jenkins_home/project1/build

