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

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


当前回答

根据目标,至少有2个选项。

选项1:创建一个新的bash进程并加入其中(更简单)

示例开始:docker exec-it<containername>/bin/bash退出:键入退出专业版:适用于所有容器(不取决于CMD/Entrypoint)Contra:创建具有自己会话和环境变量的新进程

选项2:连接到已经运行的bash(更好)

示例开始:docker attach--detach keys ctrl-d<containername>退出:使用ctrl和d键Pro:加入容器中完全相同的运行bash。您具有相同的会话和相同的环境变量。Contra:仅当CMD/Entrypoint是一个交互式bash,如CMD[“/bin/bash”]或CMD[“/bin/bash”,“--init file”,“myfile.sh”],并且容器已使用docker run-itd<image>(-i=interactive,-t=tty和-d=deamon[opt])等交互式选项启动时才有效

我们发现选项2更有用。例如,我们将apache2前景更改为普通背景apache2,然后启动bash。

其他回答

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

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

很简单!

列出所有Docker图像:

sudo docker images

在我的系统上,它显示了以下输出:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
bash                latest              922b9cc3ea5e        9 hours ago
14.03 MB
ubuntu              latest              7feff7652c69        5 weeks ago         81.15 MB

我的电脑上有两个Docker映像。假设我想运行第一个。

sudo docker run -i -t ubuntu:latest /bin/bash

这将为您提供容器的终端控制。现在,您可以在容器内执行所有类型的shell操作。像这样ls将输出文件系统根目录中的所有文件夹。

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

有两个选项,我们可以使用这些方法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)

根据目标,至少有2个选项。

选项1:创建一个新的bash进程并加入其中(更简单)

示例开始:docker exec-it<containername>/bin/bash退出:键入退出专业版:适用于所有容器(不取决于CMD/Entrypoint)Contra:创建具有自己会话和环境变量的新进程

选项2:连接到已经运行的bash(更好)

示例开始:docker attach--detach keys ctrl-d<containername>退出:使用ctrl和d键Pro:加入容器中完全相同的运行bash。您具有相同的会话和相同的环境变量。Contra:仅当CMD/Entrypoint是一个交互式bash,如CMD[“/bin/bash”]或CMD[“/bin/bash”,“--init file”,“myfile.sh”],并且容器已使用docker run-itd<image>(-i=interactive,-t=tty和-d=deamon[opt])等交互式选项启动时才有效

我们发现选项2更有用。例如,我们将apache2前景更改为普通背景apache2,然后启动bash。

如果您正在使用Docker Compose,那么这将使您进入Docker容器。

docker-compose run container_name /bin/bash

在容器中,它会将您带到Dockerfile中定义的WORKDIR。您可以通过以下方式更改工作目录

WORKDIR directory_path # E.g  /usr/src -> container's path