2016-06-22 118 views
1

我正在運行Docker for Mac(版本1.12.0-rc2-beta16(Build:9493))。如何在Mac容器中SSH到Docker

我從我的本地存儲庫中拉出了一張圖片,並使用'docker run -d'創建一個容器。使用'docker ps'我獲得'CONTAINER ID',然後使用'docker inspect <CONTAINER_ID> | grep IPA'來獲取正在運行的容器的IP地址。

我現在想通過'ssh root @ < IP地址>'使用SSH連接到容器,但該命令給出了以下錯誤:'Operation timed out'。

進一步的調查表明,我無法ping < IP地址> - >「請求超時icmp_seq 0」

我怎樣才能連接到使用SSH的容器?什麼是正確的命令?

更新:這不是重複的(如上所述)。開始「你描述的場景」的條目是正確的解決方案。

+0

您使用的圖像可能不是' t配置爲SSH。雖然關於Docker的一些問題與編程相關的鬆散,但這不是。這是一個網絡/系統管理問題,與「如何在Linux中啓用SSH?」沒有區別。 –

+0

我投票結束這個問題作爲題外話,因爲它不是關於編程。 –

回答

5

要使用bash提示符,您可以使用docker exec -ti %container-name-or-id% /bin/bash。如果你想使用ssh並確保一個ssh守護進程已經啓動並運行,你應該使用-p這個參數暴露容器中相應的端口:docker run -d -p 22:22 my_image

6

您描述的場景是在'普通'Docker上使用的方法。

由於Mac專門爲Mac創建了Docker,因此它的調整使其更易於使用。因此,在Mac上不能以這種方式使用容器的IP地址。

文檔Getting Started with Docker for Mac指出:

Previous beta releases used docker as the hostname to build the URL. From this release forward, ports are exposed on the private IP addresses of the VM and forwarded to localhost with no other host name set. See also, Release Notes for Beta 9.

因此,正確的方式來SSH到一個容器是使用端口映射到SSH端口(22)旋轉它掛在泊塢爲Mac。例如

docker run -d -p 2022:22 <Image Name> 

而SSH連接使用該命令策動(N.B.它使用「本地主機」指明,而不必確定和使用容器的IP地址的端口上):

ssh -p 2022 [email protected] 

N.B.不可能簡單地將端口22映射到它自己,即'-p 22:22',因爲這導致了下面的錯誤(至少對我來說是這樣):

docker: Error response from daemon: driver failed programming external connectivity on endpoint pensive_wilson (2e832b82fc67d3e48864975c6eb02f6c099e34eee64b29634cfde286c41e00a7): Error starting userland proxy: Failed to bind: EADDRINUSE.

+2

這是可能的,但你是對的,在大多數情況下,主機上的SSH守護進程已經使用了22端口。錯誤「EADDRINUSE」表示如果再次遇到此錯誤,此地址已被使用。 –

相關問題