2016-02-24 42 views
0

我在mac os上安裝docker。我知道在我的mac os和docker鏡像之間安裝並運行了docker-machine。當我啓動一個docker映像時,我無法從mac os ping圖像,而是必須從docker-machine連接到這些映像。我想知道是否有辦法讓我連接到mac os的docker鏡像。如何連接到mac os上的docker映像

回答

0

這是我理解它的方式:

泊塢窗機就像一個虛擬機。容器基於虛擬機(docker-machine),但與其他容器(它有自己的文件系統,進程樹等)完全隔離。圖像只是一組已經保存在一起的容器。所以「圖像」這個詞和「容器」這個詞可以在一些情況下相互混合。容器通常是指圖像的最頂層(並且是「寫入」層)。

我解決這個問題的原因是因爲從你的問題來看,我不完全確定你嘗試使用什麼術語。

您可以同時連接到docker-machine映像以及容器。

ssh到運行的容器,你可以使用

docker exec -it CONTAINER_NAME bash 

ssh到正在運行的泊塢窗機圖像,你可以使用

docker-machine ssh DOCKER_IMAGE_NAME 

我能想到的原因,只有少數你可能希望SSH進入docker-machine,但是可以使用上面的命令。幾乎總是,您將與碼頭集裝箱合作。這就是Docker的首要原因 - 一個容器管理系統。

+0

我使用ansible,劇本對泊塢窗容器設置環境配置。 Ansible正在使用SSH,因此我需要從我的mac os運行ansible來配置我的docker容器。由於我的容器無法通過ssh從mac os訪問,所以我無法運行。那麼有沒有辦法讓我通過它的IP地址訪問這些容器? –

+0

@趙一你可以使用VirtualBox直接切入。你可以使用配置加載你的機器而不是無頭的。我不完全確定這是否可以完成,但這是一個想法。 – CtheGood

+0

@趙一你可以通過默認IP 192.168.99.100訪問容器,不是嗎?請參閱https://docs.docker.com/machine/get-started/:'docker-machine ip default' –

1

這通常是通過將端口暴露給碼頭機來完成的。例如,你可以映射SSH端口是這樣的:

docker run -d -p 2022:22 my-image 

這將泊塢窗機上綁定端口2022到端口22的容器內。現在,您可以通過使用泊塢窗機的IP,像這樣的(假設default泊塢窗機)訪問:

ssh -p 2022 [email protected]$(docker-machine ip default) 

當然,這需要你的容器暴露在端口22上的服務你必須請參閱您的容器的文檔以查看哪些服務正在暴露。

如果需要,您還可以通過localhost配置對服務的訪問,而不是使用碼頭機IP。這樣做需要在您的docker-machine驅動程序中進行一些網絡配置。假設您正在使用VirtualBox(Mac OS X安裝的默認驅動程序),則可以在VirtualBox UI中或通過VBoxManage(以下文檔鏈接)配置端口轉發。

泊塢文檔暴露的端口:端口轉發https://docs.docker.com/engine/reference/run/#expose-incoming-ports

VirtualBox的文件: https://www.virtualbox.org/manual/ch06.html#natforward

+0

這種方式適用於一個碼頭圖像。如果我有多個docker映像運行,我必須爲不同的docker映像分配不同的端口。有沒有另一種方法讓我通過IP地址訪問碼頭圖像? –

+1

你是對的@趙一,你將不得不爲每個容器映射一個端口。我不知道任何其他方式。 –

相關問題