如何将文件从Docker容器复制到主机?
详细说明及使用可参考官方docker cp文档
说明
在容器和本地文件系统之间复制文件/文件夹
用法
1 | $ docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- |
例如,docker正在运行了一个jenkins,CONTAINER ID为3a3d34f3a3c0,接下来以此容器做展示:
CONTAINER ID | IMAGE | 其他略 | NAMES |
---|---|---|---|
3a3d34f3a3c0 | docker.io/jenkins/jenkins:lts | 其他略 | jenkins |
注:以下命令中使用 CONTAINER ID 的地方也可用 NAMES 代替
容器到主机
将文件或文件夹从Docker容器复制到本地文件系统。
重要:此种有两种情况需要区分,第一种你在主机,第二种你已经进入了docker jenkins容器中
- 第一种:在主机
1
2
3
4
5
6
7
8
9
10
11# 将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中
前置环境变量:
1 | $ export JENKINS_HOME=/srv/jenkins |
需要借助docker run –volume,docker jenkins启动命令需要改成:
1 | $ 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 |
重要:额外增加了一个参数 1
2
3
4
最后,直接执行即可
```js
$ cp -rf /var/jenkins_home/workspace/project2/build/. /srv/www/
主机到容器
将文件或文件夹从本地文件系统复制到Docker容器,其工作原理相同
1 | # 将主机的 /srv/jenkins 拷贝到jenkins容器中 /var/jenkins_home/project1 目录 |