【问题标题】:docker view directory within container容器内的 docker 查看目录
【发布时间】:2018-04-13 00:33:53
【问题描述】:

我正在尝试将一些文件从我的 docker 容器复制到我的本地主机,我阅读了这样做的方法的文档

docker cp 'container':path/to/file dest/path 

但这需要我知道容器内我想要到达的路径和目录,我如何查看容器的目录?我尝试了 docker diff 和 docker inspect 但这些并没有显示容器的文件目录

【问题讨论】:

    标签: docker docker-container docker-copy


    【解决方案1】:

    您首先需要知道正在运行的实例的名称?

    $ 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
    

    【讨论】:

    • $instance_name 是什么意思,您是指使用 docker ps 时的镜像名称、容器 ID 还是 NAMES 下列出的内容?
    • 好的,实例是否正在运行?如果是,并且您需要在使用最后一列的实例中复制文件。编辑:名称下列出的内容。
    • 容器 ID 应该和它的名字一样有效。也不是每个图像都安装了 Bash。例如,大多数基于 Alpine 的图像都没有。
    • 如果你有没有 bash 的 alpine 镜像,你可以使用上面提到的第二个命令 - docker exec -it container_name ls 。意味着无论您打算在 bash 中运行什么,都使用 docker 容器命令运行它(因为 bash 在容器中不可用)。
    【解决方案2】:

    试试这个。

    Copying files from host to Docker container

    "docker ps" 查找容器的目录。

    【讨论】:

    • docker ps 将显示正在运行的容器,而不是任何给定容器内的目录结构。
    • docker ps 是另外一回事。
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2018-05-29
    • 2015-07-02
    • 2014-03-08
    相关资源
    最近更新 更多