gpt4 book ai didi

macos - 如何在 OSX(boot2docker)上获得与 docker 容器的 ssh 连接

转载 作者:IT老高 更新时间:2023-10-28 12:41:18 26 4
gpt4 key购买 nike

我在 OSX 上使用带有 boot2docker 的 docker .

我想从我的终端获得一个 SSH 连接到一个正在运行的容器。

但我不能这样做:(

我认为这是因为 Docker 是在虚拟机中运行的。

最佳答案

您必须做几件事才能启用 SSH 到在 VM 中运行的容器:

  1. 在您的容器中安装并运行 sshd (example)。 sshd 默认情况下不存在,因为容器通常只运行一个进程,尽管它们可以运行任意数量。
  2. EXPOSE 一个端口,作为创建镜像的一部分,通常为 22,这样当您运行容器时,守护程序会连接到容器内的 EXPOSE 端口并且容器的外部可能会暴露一些东西。
  3. 运行容器时,您需要决定如何映射该端口。您可以让 Docker 自动或显式地执行此操作。我建议明确: docker run -p 42222:22 ... 将 VM 上的端口 42222 映射到容器中的端口 22。
  4. 向虚拟机添加端口映射以将端口公开给您的主机。例如当您的 VM 未运行时,您可以添加如下映射:VBoxManage modifyvm "boot2docker-vm"--natpf1 "containerssh,tcp,,42222,,42222"

然后从您的主机,您应该能够 ssh 到主机上的端口 42222 以访问容器的 ssh 守护进程。

当我执行上述步骤时会发生以下情况:

$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "containerssh,tcp,,42222,,42222"
$ ./boot2docker start
[2014-04-11 12:07:35] Starting boot2docker-vm...
[2014-04-11 12:07:55] Started.
$ docker run -d -p 42222:22 dhrp/sshd
Unable to find image 'dhrp/sshd' (tag: latest) locally
Pulling repository dhrp/sshd
2bbfe079a942: Download complete
c8a2228805bc: Download complete
8dbd9e392a96: Download complete
11d214c1b26a: Download complete
27cf78414709: Download complete
b750fe79269d: Download complete
cf7e766468fc: Download complete
082189640622: Download complete
fa822d12ee30: Download complete
1522e919ec9f: Download complete
fa594d99163a: Download complete
1bd442970c79: Download complete
0fda9de88c63: Download complete
86e22a5fdce6: Download complete
79d05cb13124: Download complete
ac72e4b531bc: Download complete
26e4b94e5a13b4bb924ef57548bb17ba03444ca003128092b5fbe344110f2e4c
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26e4b94e5a13 dhrp/sshd:latest /usr/sbin/sshd -D 6 seconds ago Up 3 seconds 0.0.0.0:42222->22/tcp loving_einstein
$ ssh root@localhost -p 42222
The authenticity of host '[localhost]:42222 ([127.0.0.1]:42222)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:42222' (RSA) to the list of known hosts.
root@localhost's password: screencast
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.12.1-tinycore64 x86_64)

* Documentation: https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@26e4b94e5a13:~# exit
logout

这样显示 ssh->localhost 42222->VM 端口 42222->容器端口 22。

关于macos - 如何在 OSX(boot2docker)上获得与 docker 容器的 ssh 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com