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

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


当前回答

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

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

其他回答

有两个选项,我们可以使用这些方法shell和bash直接连接到docker终端,但通常不支持bash,而支持defalt sh要进入正在运行的容器,请键入以下内容:

docker exec-it container_name/container_ID sh

要猛击正在运行的容器,请键入以下命令:

docker exec-it container_name/container_ID bash

您只想使用bash终端,而不想在Dockerfile中安装bash终端(如RUNaptinstallbash-y)

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

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

注意:这个答案提升了我写的一个工具。

我已经创建了一个容器化的SSH服务器,您可以将其“粘贴”到任何正在运行的容器。这样,您可以使用每个容器创建合成。唯一的要求是容器具有Bash。

以下示例将启动一个连接到名为“mycontainer”的容器的SSH服务器。

docker run -d -p 2222:22 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e CONTAINER=my-container -e AUTH_MECHANISM=noAuth \
  jeroenpeeters/docker-ssh

ssh localhost -p 2222

当您连接到此SSH服务(使用您选择的SSH客户端)时,将在名为“我的容器”的容器中启动Bash会话。

有关更多指针和文档,请参阅:https://github.com/jeroenpeeters/docker-ssh

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
}