我想把一些文件从我的Docker容器复制到本地主机,我查阅了文档得知可以通过以下方式完成:
docker cp 'container':path/to/file dest/path
但是这需要我知道容器中我想要进入的路径和目录,我该如何查看容器的目录?我尝试过使用docker diff和docker inspect,但这些命令并不能显示容器的文件目录。
我想把一些文件从我的Docker容器复制到本地主机,我查阅了文档得知可以通过以下方式完成:
docker cp 'container':path/to/file dest/path
你首先需要知道正在运行的实例的名称?
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36029... image/image ... 1 sec.. Up.. ... some-container
现在,进入容器并查找您需要的内容。假设容器名称为some-image。
$ docker exec -it some-container /bin/bash
root@1f3420c939:/var/www/html#
如果您已经知道文件夹的位置:
docker exec -it some-container ls /path/to/file
编辑:
正如@Konrad Botor所指出的那样,也可以使用容器ID而不是容器名称,更重要的是,并非所有图像都安装了bash
(alpine是最常用的不使用它的图像)。
这里有一个 alpine 的示例:
docker run -d \
--rm \
--name my_alpine_container \
alpine \
sleep 3600
CONTAINER_ID=$( docker ps -q my_alpine_container )
# to "enter" the container:
docker exec -it $CONTAINER_ID sh
docker ps
命令会显示正在运行的容器,而不是任何给定容器内部的目录结构。 - programmerq
docker exec -it container_name ls
。 这意味着无论您想在bash中运行什么,都要使用docker容器命令运行它(因为容器内部不提供bash)。 - Abhishek Shah