当前位置: 首页 > 面试题库 >

如何进入Docker容器的外壳?

阎知
2023-03-14
问题内容

我开始使用Docker。我正在使用WordPress基本映像和docker-compose。

我正在尝试使用ssh进入其中一个容器,以检查在初始构建期间创建的文件/目录。我试着跑步docker-compose run containername ls -la,但是没有做任何事情。即使这样做,我还是希望有一个可以遍历目录结构的控制台,而不是运行单个命令。用Docker执行此操作的正确方法是什么?


问题答案:

docker attach将允许您连接到Docker容器,但这与并不是真的一样ssh。例如,如果您的容器正在运行Web服务器,docker attach则可能会将您连接到Web服务器进程的 标准输出 。它不一定会给您外壳。

docker exec命令可能就是您要查找的内容。这将使您可以在现有容器中运行任意命令。例如:

docker exec -it <mycontainer> bash

当然,您正在运行的任何命令都必须存在于容器文件系统中。

在上面的命令中<mycontainer>是目标容器的名称或ID。是否使用都没关系docker compose; 只需运行docker ps并使用ID(在第一列中显示一个十六进制字符串)或名称(在最后一列中显示)即可。例如,给定:

$ docker ps
d2d4a89aaee9        larsks/mini-httpd   "mini_httpd -d /cont   7 days ago          Up 7 days                               web

我可以跑:

$ docker exec -it web ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
18: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever

我可以通过运行以下命令完成同一件事:

$ docker exec -it d2d4a89aaee9 ip addr

同样,我可以在容器中启动外壳程序。

$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$


 类似资料:
  • 本文向大家介绍Docker如何进入启动容器,包括了Docker如何进入启动容器的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Docker如何进入启动容器,分享给大家,具体如下: 在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。 这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。 1、at

  • 我用python脚本创建了一个docker容器。python脚本接受一个输入文件,进行一些处理,并将输出文件保存在指定的位置。

  • 我有一个容器在前台运行Apache服务。我希望能够从另一个shell访问容器,以便在它内部“四处查看”并检查文件。目前,如果我连接到容器,我只能查看Apache守护进程,无法运行任何命令。

  • 问题内容: 我成功使用以下方法将其炮击到Docker容器中: 现在我需要编辑文件,并且里面没有任何编辑器: 如何编辑文件? 问题答案: 就像注释中一样,没有默认的编辑器集-奇怪- 环境变量为空。您可以通过以下方式登录到容器: 并运行: 或使用以下Dockerfile: 交付的Docker映像已修剪到最低限度-因此,发货的容器未安装任何编辑器。这就是为什么需要手动安装它的原因。 编辑 我也鼓励你看过

  • 问题内容: 我正在运行容器 hypriot / rpi-busybox-httpd 我正在尝试SSH到docker容器:但它给出了错误: 我马上就做吗? 问题答案: 可能是您的映像未安装二进制/ bin / bash(如之前所建议),我遇到了同样的问题,因此我可以使用/ bin / sh进入容器 另一个解决方法是直接执行命令,而无需访问任何shell。

  • 我有很多运行docker容器的测试。每个都有一个卷。 如何知道需要删除的卷名? 例如: 手动停止并删除容器后,卷仍然存在。 我不想删除所有卷,因为其中一些卷仍在使用中。