Mac平臺上Docker安裝與使用

您可以利用 Docker Toolbox 來安裝 Docker。Docker Toolbox 提供了以下工具:

  • 用於運行 docker-machine 二進制文件的 Docker Machine
  • 用於運行 docker 二進行文件的 Docker Engine
  • 用於運行 docker-compose 二進行文件的 Docker Compose (Mac 特有)
  • Kitematic,Docker 的圖形用戶界面
  • 用於 Docker 命令行環且預先配置好的 shell
  • Oracle VM VirtualBox

由於 Docker 的後臺程序使用了 Linux 特有的內核特性,所以您不能直接在 OS X 上運行 Docker。相反,您必須使用 docker-machine 來創建並附加一臺虛擬機(VM)。該虛擬機需要安裝 Linux 操作系統以便在您 Mac 機上運行 Docker。

####前提條件

您 Mac 機的 OS X 版本必須大於等於 10.8 "Snow Leopard" 纔可以安裝 Docker Toolbox。

###在安裝之前先來了解一些關鍵概念

當我們在一臺 Linux 主機上安裝完 Docker 之後,我們的機器中就包含了本地主機和 Docker 主機。如果從網絡層來劃分,本地主機就代表你的電腦,而 Docker 主機就是運行 container 的那臺機器。

在 Linux 機器上的一種典型安裝 Docker 方法:Docker 客戶端,Docker 後臺程序和 container 會直接運行在您的機器上。這就意味着您可以使用標準的本地主機尋址(例如 localhost:8000 或者 0.0.0.0:8376)來爲 Docker container 分配一個地址。

linux_docker_host

在 OS X 上安裝的 Docker ,其 Docker 後臺程序是運行在一個名爲 default 的 Linux 虛擬機上的。default 是 Linux 上的一個輕量級的虛擬機,是專門用於在 Mac OS X 機器上運行 Docker 的。

mac_docker_host

在 OS X 中,Docker 主機地址就是 Linux 虛擬機的地址。當你使用 docker-machine 啓動虛擬機的時候,該虛擬機會自動獲取到 IP 地址。當您開啓一個 container 的時候,container 上的端口會映射到虛擬機的端口上。本頁面上的實踐操作會一一印證上述內容。

###安裝

如果您有一個正在運行着的 VirtualBox,那麼請您在運行安裝器(Docker Toolbox)之前務必關閉它。

  1. 進入 Docker Toolbox 頁面。

  2. 點擊 Docker Toolbox 下載鏈接,進行下載。

  3. 雙擊安裝包或者通過右擊並在快捷菜單中選擇“打開”的方式安裝 Docker Toolbox。

    此時會彈出“Install Docker Toolbox”(安裝 Docker 工具箱)窗口。

    mac-welcome-page

  4. 點擊“繼續”(Continue),安裝 toolbox。

    此時,toolbox 會展現給你一些選項,供您自定義標準安裝。

    mac-page-two

    默認情況下,標準的 Docker Toolbox 安裝是這樣的:

    • 向 /usr/local/bin 目錄中添加 Docker 工具的二進制文件。
    • 修改權限使得這些二進制文件可供任何用戶使用。
    • 更新現有的 VirtualBox 安裝。

    通過點擊“自定義”或“更改安裝目錄”修改這些默認安裝值。
  5. 點擊“安裝”,執行標準安裝。

    系統提示您輸入密碼。

    mac-password-prompt

  6. 輸入密碼,繼續安裝

    安裝完成後,Docker Toolbox 會爲您提供一些信息,通過這些信息您可以完成一些常見的任務。

  7. 點擊“關閉”,離開當前窗口。

##運行 Docker Container

想要運行一個 Docker 容器,你需要做如下內容:

  • 創建一個新的(或開啓一臺已存在的)Docker 虛擬機
  • 從您當前的環境切換到新的虛擬機的環境中
  • 利用 docker 客戶端創建,加載並管理 container

一旦您創建了一臺虛擬機,您就可以隨時使用它。如同任意一臺 VirtualBox 虛擬機,在每次使用它的時候都會保存其配置。

這裏提供兩種使用 Docker Toolbox 的方法:使用 Docker 的快速入門終端或使用您的 shell 環境。

###使用 Docker 的快速入門終端

  1. 打開“應用程序”文件夾或“啓動面板”。

  2. 找到 Docker 快速入門終端並雙擊啓動它。

    該應用程序:

    • 開啓一個終端窗口
    • 如果還沒有虛擬機的化,請創建一臺名叫 default 的虛擬機;如果已經存在這樣一臺虛擬機,請你開啓它。
    • 將當前終端環境切換到虛擬機環境中。

    一旦啓動完成,Docker 快速入門終端會是如下狀態:

    mac-success現在,您可以運行 docker 命令了。

  3. 通過運行 hello-world container 來覈實您的安裝是否成功。

    $ docker run hello-world
    Unable to find image 'hello-world:latest' locally
    511136ea3c5a: Pull complete
    31cbccb51277: Pull complete
    e45a5af57b00: Pull complete
    hello-world:latest: The image you are pulling has been verified.
    Important: image verification is a tech preview feature and should not be
    relied on to provide security.
    Status: Downloaded newer image for hello-world:latest
    Hello from Docker.
    This message shows that your installation appears to be working correctly.
    
    
    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
       (Assuming it was not already locally available.)
    3. The Docker daemon created a new container from that image which runs the
       executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
       to your terminal.
    
    
    To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash
    
    
    For more examples and ideas, visit:
    http://docs.docker.com/userguide/
    

一個可以和 Docker 工具進行交互的另一種典型方法就是:從您的 shell 命令行入手。

###使用shell 命令行 該部分假設您正在運行一個 Bash shell。您運行的可能是不同的 shell,例如 C shell,但是不用擔心,命令都是一樣的。

  1. 創建一個新的 Docker 虛擬機。

    $ docker-machine create --driver virtualbox default      
    
    Creating VirtualBox VM...
    Creating SSH key...
    Starting VirtualBox VM...
    Starting VM...
    To see how to connect Docker to this machine, run: docker-machine env default
    

    這就在 VirtualBox 中創建了一臺新的 default 虛擬機。

    該命令還會在 ~/.docker/machine/machines/default 目錄下生成一個 docker machine 的配置文件。您只需執行一次 create 命令。然後,您可以使用 docker-machine 命令來開啓,停止,查詢並管理虛擬機。

  2. 列出所有可用的 docker machine。

    $ docker-machine ls
    NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
    default             *        virtualbox   Running   tcp://192.168.99.101:2376  
    

    如果您之前安裝了現在已經捨棄了的 Boot2Docker 這個應用程序的話或者您運行了 Docker 快速入門終端,在列表中還會有一個 dev 虛擬機。當 您創建 default 虛擬機的時候,docker-machine 命令給出了一些指導,以便您您連接虛擬機。

  3. 獲取 default 虛擬機的環境變量

    $ docker-machine env default
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.101:2376"
    export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
    export DOCKER_MACHINE_NAME="default"
    # Run this command to configure your shell: 
    # eval "$(docker-machine env default)"
    
  4. 連接到 default 虛擬機

    $ eval "$(docker-machine env default)"
    
  5. 運行 hello-world container 來驗證您的安裝是否已經成功。

    docker run hello-world
    

##學習 Toolbox 安裝

Toolbox 將 Docker Engine 的可執行文件和 Docker 的可執行文件下載到您的系統中。當您使用 Docker 快速入門終端或手動創建一個 default 虛擬機的時候,Docker Machine 會更新 ~/.docker/machine/machines/default 文件。該文件夾中包含了虛擬機的配置文件。

您可以利用 Docker Machine 在系統中創建多個虛擬機,那麼也就會有多個虛擬機的配置文件。如果您想要刪除某臺虛擬機,請您使用 docker-machine rm <machine-name> 命令。

##從 Boot2Docker 遷移 如果您現在用的還是 Boot2Docker 的話,在您的本地系統中還會有一個 boot2docker-vm 虛擬機。爲了允許 Docker Machine 管理該臺虛擬機,你可以對它進行遷移。

  1. 打開一個終端或 Docker 的命令行界面。

  2. 輸入以下命令。

    docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
    
  3. 使用 docker-machine 命令與該臺要被遷移的虛擬機進行交互。 docker-machine 的子命令和 boot2docker 的子命令比起來還是有一些不同之處的。下面這個表列出了對比了二者的不同並介紹其功能。

    boot2docker docker-machine docker-machine description
    init create Creates a new docker host.
    up start Starts a stopped machine.
    ssh ssh Runs a command or interactive ssh session on the machine.
    save - Not applicable.
    down stop Stops a running machine.
    poweroff stop Stops a running machine.
    reset restart Restarts a running machine.
    config inspect Prints machine configuration details.
    status ls Lists all machines and their status.
    info inspect Displays a machine's details.
    ip ip Displays the machine's ip address.
    shellinit env Displays shell commands needed to configure your shell to interact with a machine.
    delete rm Removes a machine.
    download - Not applicable.
    upgrade upgrade Upgrades a machine's Docker client to the latest stable release.

##Mac OS X 上 Docker 的實例 通過了解本小節,您可以嘗試在虛擬機上進行一些可行的 container 任務。現在,您應該有一臺運行着的虛擬機,且通過 shell 腳本可以連接到該虛擬機。爲了驗證上面所說的,可以執行如下命令來驗證:

$ docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
default             *        virtualbox   Running   tcp://192.168.99.100:2376   

該臺處於 ACTIVE 狀態的虛擬機,即本例中的 default 虛擬機,就是您的環境所指向的虛擬機。

###訪問 container 的端口

  1. 在 DOCKER_HOST 上開啓一個NGINX container。

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

一般來說,docker run 命令會開啓一個 container,並運行它,最後關閉它。加上 -d 這個參數,container 就可以在您執行了 docker run 這條命令後繼續在後臺運行了。加上 -P 這個參數就可以將 container 監聽的那個端口告知給 Docker Host;這樣您就可以在您的 Mac 機上訪問 container 了。

  1. 執行 docker ps 命令,查看運行着的 container

     CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                           NAMES
     5fb65ff765e9        nginx:latest  
    

此時,您會發現 nginx 依然在後臺運行。

  1. 查看 container 的端口

     $ docker port web
     443/tcp -> 0.0.0.0:49156
     80/tcp -> 0.0.0.0:49157
    

該命令顯示出的內容會告訴你 web container 的 80 端口已經映射到了 Docker Host 上的 49157 端口上。

  1. 在您的瀏覽器中輸入地址 http://localhost:49157(localhost 就是 0.0.0.0)。

    bad_host1並沒有生效,其原因就是 DOCKER_HOST 的地址並不是你本地的機器的地址(0.0.0.0),而是您的 Docker 虛擬機的地址。

  2. 獲取 Docker 虛擬機(即 default)的地址。

     $ docker-machine ip default
     192.168.59.103
    
  3. 在您的瀏覽器中輸入地址 http://192.168.59.103:49157

    good_host1成功了!

  4. 如果您想停止並刪除正在運行的 nginx container 的話,請執行如下操作:

     $ docker stop web
     $ docker rm web
    

###爲容器掛載一個卷

當您開啓一個 container 的時候,系統會自動將您本機中的 /Users/username 目錄共享給 Docker 虛擬機。通過本次共享,您可以將該目錄掛載到您的 container 上。下面的內容將會介紹如何做到這些。

  1. 跳轉到您的用戶 $HOME 目錄下。

     $ cd $HOME
    
  2. 創建一個新的 site 目錄。

     $ mkdir site
    
  3. 跳轉到 site 目錄中。

     $ cd site
    
  4. 創建一個新的 index.html 文件。

     $ echo "my new site" > index.html
    
  5. 開啓一個新 nginx container 並將 html 目錄替換爲 site 目錄。

     $ docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
    
  6. 獲取到 mysite 這個 container 的端口。

     $ docker port mysite
     80/tcp -> 0.0.0.0:49166
     443/tcp -> 0.0.0.0:49165
    
  7. 在瀏覽器中輸入地址:

    newsite_view1

  8. 立即添加一個文件到 $HOME/siet 目錄下。

     $ echo "This is cool" > cool.html
    
  9. 在瀏覽器中輸入地址:

    cool_view1

  10. 停止然後刪除正在運行的 mysite container。

    $ docker stop mysite
    $ docker rm mysite
    

##更新 Docker Toolbox

爲更新Docker Toolbox, 需要下載並重新運行Docker Toolbox安裝器.

##卸載 Docker Toolbox

按照以下步驟卸載Toolbox:

  1. 列出所有的虛擬機

     $ docker-machine ls
     NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
     dev                 *        virtualbox   Running   tcp://192.168.99.100:2376   
     my-docker-machine            virtualbox   Stopped                               
     default                      virtualbox   Stopped  
    
  2. 刪除(列出的)每一臺虛擬機.

     $ docker-machine rm dev
     Successfully removed dev
    

刪除一臺虛擬機,意味着從VirtualBox~/.docker/machine/machines目錄中同時刪除虛擬機文件。

  1. 從“應用程序“文件夾中刪除Docker快捷終端(Quickstart Terminal)和Kitematic.

  2. 從/usr/local/bin文件夾中刪除docker, docker-compose和 docker-machine命令文件.

     $ rm /usr/local/bin/docker
    
  3. 從系統中刪除 ~/.docker 文件夾.

##學習更多

使用"docker-machine help"命令可以列出關於Docker Machine的全部命令行參考信息.參照Docker Machine文檔來獲得關於如何使用 SSH 或者 SCP 訪問虛擬機的信息。 接下來,可以繼續瞭解Docker用戶手冊 . 如果對使用Kitematic圖形界面工具感興趣,可以參考閱讀 Kitermatic用戶手冊.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章