从Docker容器复制文件到宿主机(本地文件系统)

作者 | 2020年5月13日

在本文中,我们将向你演示如何使用docker cp命令将Docker容器中的文件复制到宿主机(本地文件系统)。

举个例子,有个运行中的容器,ID是d362659da5fc,稍后我们将从该容器中复制一些文件。

$ docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMES
d362659da5fc        markdownhtml:1.1    "java -jar app.jar"   20 minutes ago      Up 20 minutes       0.0.0.0:80->8080/tcp,   xenodochial_volhard

PS: docker cp命令与scp命令相似。

1. 容器 -> 本地

从Docker容器中复制文件夹到本地文件系统:

$ docker cp <containerId>:/file/path/in/container/file /host/local/path/file

# 复制容器d362659da5fc中的/opt/app/app.log到当前目录
$ docker cp d362659da5fc:/opt/app/app.log .

# 复制容器d362659da5fc中的/opt/app/app.log到/home/mkyong/backup/app.log
$ docker cp d362659da5fc:/opt/app/app.log /home/mkyong/backup/

# 复制容器d362659da5fc中的/opt/app/app.log到本地, 并从命名为/home/mkyong/backup/app.bk.20200511.log
$ docker cp d362659da5fc:/opt/app/app.log /home/mkyong/backup/app.bk.20200511.log

# 复制容器中的文件夹/opt/app/到/home/mkyong/backup2/
$ docker cp d362659da5fc:/opt/app/ /home/mkyong/backup2/

如果文件在容器中不存在,则会抛出错误:

$ docker cp d362659da5fc:/opt/app/abc.txt /home/mkyong/backup

Error: No such container:path: d362659da5fc:/opt/app/abc.txt

2. 本地 -> 容器

$ docker cp /host/local/path/file <containerId>:/file/path/in/container/file

# 复制当前目录的db.config文件到容器da3430062137中/opt/app目录下面
$ docker cp db.config d362659da5fc:/opt/app/

# 复制/var/www/app/db.config文件到容器中的目录/opt/app下面,并从命名为db.prod.config
$ docker cp /var/www/app/db.config d362659da5fc:/opt/app/db.prod.config

# 复制目录/var/www/app/到容器中的目录/opt/app/

$ docker cp /var/www/app/ d362659da5fc:/opt/app/

发表评论

电子邮件地址不会被公开。 必填项已用*标注