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

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


当前回答

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

winpty docker exec -it <container_id> sh

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

其他回答

如果容器已经退出(可能是由于某些错误),您可以

$ docker run --rm -it --entrypoint /bin/ash image_name

or

$ docker run --rm -it --entrypoint /bin/sh image_name

or

$ docker run --rm -it --entrypoint /bin/bash image_name

创建一个新容器并将shell放入其中。由于指定了--rm,因此当退出shell时,容器将被删除。

在某些情况下,您的图像可以是基于阿尔卑斯山的。在这种情况下,它将抛出:

OCI运行时执行失败:执行失败:container_linux.go:348:启动容器进程导致“exec:\”bash\“:在中找不到可执行文件$PATH“:未知

因为/bin/bash不存在。相反,您应该使用:

docker exec -it 9f7d99aa6625 ash

or

docker exec -it 9f7d99aa6625 sh

去侧溶液

安装goinside命令行工具,包括:

sudo npm install -g goinside

并进入码头集装箱,码头尺寸适当,带有:

goinside docker_container_name

旧答案

我们将此代码段放在~/.profile中:

goinside(){
    docker exec -it $1 bash -c "stty cols $COLUMNS rows $LINES && bash";
}
export -f goinside

这不仅使每个人都能够进入一个正在运行的容器:

goinside containername

它还解决了固定Docker集装箱码头尺寸的长期问题。如果你面对它,这是非常令人讨厌的。

此外,如果您按照链接进行操作,您的docker容器名称也会有命令完成。

docker exec-it<container_id或name>bash

OR

docker exec-it<container_id或name>/bin/bash

使用此命令:

docker exec -it containerid /bin/bash