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

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


当前回答

去侧溶液

安装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容器名称也会有命令完成。

其他回答

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

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

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

docker exec -it 9f7d99aa6625 ash

or

docker exec -it 9f7d99aa6625 sh

易于理解的

docker exec -it <container_id> bash

在上面-它意味着交互式终端。

此外,图像名称:

docker exec -it <REPOSITORY name> bash

这对我来说效果最好,因为如果使用它,我真的不必在docker构建中添加入口点。。

sudo docker运行-it--entrypoint/bin/bash<container_name>

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

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

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

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)