我开始和Docker合作了。我正在使用WordPress的基本图像和docker合成。

我正在尝试ssh到其中一个容器中,以检查在初始构建期间创建的文件/目录。我试着运行docker compose运行containername ls-la,但没有任何效果。即使是这样,我也希望有一个控制台,在那里我可以遍历目录结构,而不是运行一个命令。使用Docker的正确方法是什么?


当前回答

如果您在Windows上使用Docker,并希望获得容器的shell访问权限,请使用以下命令:

winpty docker exec -it <container_id> sh

很可能,您已经安装了GitBash。如果没有,请确保安装它。

其他回答

Use:

docker attach <container name/id here>

另一种方法(尽管有危险)是使用attach,但如果按Ctrl+C退出会话,也会停止容器。如果您只是想看看发生了什么,请使用docker-logs-f。

:~$ docker attach --help
Usage:  docker attach [OPTIONS] CONTAINER

Attach to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --help                 Print usage
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)

要连接到Windows容器中的cmd,请使用

docker exec -it d8c25fde2769 cmd

其中d8c25fde2769是容器id。

docker高管肯定会是一个解决方案。解决您提出的问题的一个简单方法是将Docker中的目录安装到本地系统的目录中。

以便您可以立即查看本地路径中的更改。

docker run -v /Users/<path>:/<container path> 

我创建了一个终端功能,以便更方便地访问容器的终端。也许这对你们也有用:

结果是,不用键入:

docker exec -it [container_id] /bin/bash

你会写:

dbash [container_id]

将以下内容放入~/.bash_profile(或其他适合您的文件),然后打开一个新的终端窗口并享受快捷方式:

#usage: dbash [container_id]
dbash() {
    docker exec -it "$1" /bin/bash
}

如果您像我一样在这里寻找Docker Compose特定的答案,它提供了一种简单的方法,无需查找生成的容器ID。

docker-compose-exec根据docker-coompose.yml文件获取服务的名称。

因此,要为您的“web”服务获取Bash shell,您可以执行以下操作:

$ docker-compose exec web bash