over 4 years ago

上一篇提到使用Boot2Docker執行Docker

本篇接著實作官網上範例

Boot2Docker原理

之前提到Mac環境無法直接執行docker,所以在開了一台虛擬機器跑docker

Linux環境的docker如下 (來自官網的圖)

DOCKER_HOST為提供安裝Docker的平台 (E.g. Linux, Mac)
Docker Daemon是即為Docker程式

可以看到Client是可以直接連到Docker Daemon,假設Container (E.g. Apache Server) 有開放Port 8000,則可以透過 localhost:8000 連到。

Mac環境下的docker如下

可以看到多了一橘色區域,就是boot2docker啟動的虛擬機器,Client要溝通則需透過虛擬機器的IP。假設IP為172.16.10.2,其中Port 5050對應到Container的Port 8000,則需要用 172.16.10.2:5050 去連。

nginx 範例

nginx是最近火紅的Web Server,接下來將透過安裝nginx了解Mac下的IP對應。

啟動nginx container

> docker run -d -P --name web nginx

-d, -P 將會在後面介紹,--name web定這nginx命名為web,稍後會用到。這指令自動安裝nginx並且啟動。

現在我們想知道nginx的port跟虛擬機器port的對應

> docker port web
  443/tcp -> 0.0.0.0:32768
  80/tcp -> 0.0.0.0:32769

可以看到前面是nginx的port (80),後面是docker host的port (32769)。

但由於Mac是需要透過虛擬機器,我們要知道虛擬機器的IP

> boot2docker ip
  192.168.59.103

在瀏覽器中打上 192.168.59.103:32769

就可成功連線

最後將nginx停止,刪除

> docker stop web
> docker rm web

更多 boot2docker

下次重開機後,要使用docker記得先啟動虛擬機器

> boot2docker up

在設定環境變數

> eval "$(boot2docker shellinit)"

如果不用了也可以自行關閉

> boot2docker poweroff

想查看現在狀態

> boot2docker status

如果發現boot2docker的IP連不上,有可能是你換過了網路,需要boot2docker重新取得IP,遇到這種情況,重新啟動即可

> boot2docker restart
← [DevOp] Mac上使用Docker
 
comments powered by Disqus