1.1.0.1、在 Max OS 上安裝

Mac OS X

注意這個Docker的發行版本不建議使用Boot2Docker命令行,建議使用Docker Machine。使用Docker Toolbox安裝Docker Machine跟安裝其他Docker工具一樣。

你可以使用Docker Toolbox安裝Docker。Docker Toolbox包含如下的Docker 工具:

  • Docker Machine 爲了運行 docker-machine 可執行包
  • Docker Engine 爲了運行 docker 可執行包
  • Docker Compose 爲了運行 docker-compose 可執行包
  • Kitematic,Docker GUI
  • 一個預設的Docker命令行環境
  • Oracle VM VirtualBox

因爲Docker Daemon使用了Linux一個內核特性,原生的OS X系統不能直接運行Docker。折中的解決方案,你必須使用 docker-machine 去創建並連接到一個虛擬機上(VM)。這個VM會爲你的Mac提供Docker運行環境。

要求

你的Mac必須安裝OS X 10.8(及以上)"美洲獅"的操作系統,並安裝好Docker Toolbox。

在安裝前,先了解一些主要的概念

Docker 在Linux上安裝過程裏,你的物理機器既是本地主機也是Docker的宿主機。在網絡裏,本地主機的意思是你的計算機。Docker的宿主機是託管這容器運行的計算機。

在一個標準的Linux安裝中,Docker客戶端、Docker Daemon和一些運行中的容器會直接寄託在你的本地主機上。這意味着你可以使用標準的本地地址和端口去訪問容器,例如, localhost:8000 或 0.0.0.0:8376

Linux Architecture Diagram

在一個OS X 安裝裏,docker daemon(守護進程)會運行在一個被稱爲default 的Linux虛擬機的內部。 default 是一個輕量的Linux虛擬機,它爲Mac OS X運行Docker Daemon做了模擬。VM(虛擬機)完全運行在內存裏,它非常小,大約只有24MB,只需約5S就可以啓動。

OSX Architecture Diagram

在OS X內,Docker 宿主機的地址跟Linux虛擬一樣。當你使用 docker-machine 啓動Linux虛擬機是,它會分配一個IP地址。當你啓動一個容器是,容器上的端口會映射到虛擬機的端口上。

安裝

如果你已經運行了VirtualBox,在安裝前,你必須停止它。

  1. 打開 Docker Toolbox 主頁。

  2. 點擊安裝程序連接去下載。

  3. 雙擊安裝包或通過右鍵彈出的菜單選擇 "打開(Openning)" 啓動安裝。

    安裝程序啓動後,會彈出 “Install Docker Toolbox” 對話框。

  4. 點擊 “Continue” 安裝 toolbox。

    安裝程序會給你提供選項來定製標準的安裝。

    默認,標準的 Docker Toolboxthe 會安裝如下工具:

    • 將所有的Docker 工具二進制執行文件安裝到 /usr/local/bin 文件裏
    • 將上述的執行文件的權限向所有用戶開發
    • 安裝 VirtualBox;或更新已經存在的安裝

    通過  “Customize(定製)” or “Change Install Location(改變安裝路徑)” 來改變默認設置。

  5. 點擊 “Install” 執行標準安裝。

    系統會提示你輸入你的密碼。

  6. 輸入你的密碼繼續安裝。

    安裝完成後,安裝程序會給提供一些開始操作的信息。

  7. 點擊 “Close” 退出安裝。

運行一個Docker容器

爲了運行一個Docker容器,你需要如下步驟:

  • 創建一個新的(或啓動一個已經存在的) Docker 虛擬機
  • 將你的環境切換到新的虛擬機
  • 使用 docker 客戶端創建、加載和管理容器

當你創建一個機器時,如果你喜歡,你可以隨時重用它。正如所有的VirtualBox虛擬機一樣。

這裏有兩種方式可以使用你已經安裝的工具,從Docker 快速終端或從你的shell

使用 Docker 快速啓動終端

  1. 打開 “Applications(應用)” 文件夾或“Launchpad”(啓動面板)。

  2. 找到 Docker 快速啓動終端(Quickstart Terminal)並雙擊啓動它。

    應用執行流程:

    • 打開一個終端窗口
    • 創建一個 default 虛擬機,如果它不存在,並啓動虛擬機
    • 將終端的環境指向這個虛擬機

    當啓動完成後,快速啓動終端會輸出一些報告:

    現在,你可以運行 docker 命令了。

  3. 通過運行hello-world 容器覈實上述設置是否成功。

    $ 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/
    

一個更加通用的交互方式是使用你常用的shell 命令行和Docker 工具進行通訊。

從你的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 文件夾裏。你只需運行一次 create 命令。之後,你可以在命令行裏,使用 docker-machine 去啓動、停止、查詢和其他管理虛擬機。

  2. 列出你的可用機器。

    $ 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. 獲取你的新虛擬機的環境命令。

    $ 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. 連接你的shell到 default 機器。

    $ eval "$(docker-machine env default)"
    
  5. 運行 hello-world 容器去校驗你的設置。

    $ docker run hello-world
    

瞭解 Toolbox 安裝

Toolbox 安裝了Docker 引擎二進制包,Docker二進制包存放在你的系統上。當你使用Docker 快速啓動終端或手動創建一個 default 虛擬機時,Docker Machine 會更新 ~/.docker/machine/machines/default 文件夾到你的系統。這個文件夾包含虛擬機的配置文件。

你可以創建多個虛擬機,使用Docker Machine 在你的系統上。因此,你可能得到多個虛擬機文件夾,如果你擁有多個虛擬機。移除一個虛擬機,可以使用 docker-machine rm <machine-name> 命令。

從Boot2Docker遷移

如果你之前使用 Boot2Docker,你擁有一個Docker boot2docker-vm 虛擬機,在你的本地系統上。如果你想讓Docker Machine 去管理舊的虛擬機,你可以遷移它。

  1. 打開一個終端或Docker CLI(命令行接口),在你的系統上。

  2. 輸入如下命令:

    $ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
    
  3. 使用 docker-machine 命令發起虛擬的遷移通信。

docker-machine 子命令與 boot2docker 有稍許的差異。如下列表中列出了 docker-machine 等同的子命令:

boot2docker docker-machine docker-machine描述
init create 創建一個新的docker主機
up start 啓動一個停止的機器
ssh ssh 運行一個命令或互動ssh回話,在機器上。
save - 沒有對等指令
down stop 停止一個運行中的機器
poweroff stop 停止一個運行中的機器
reset restart 重啓一個運行中的機器
config inspect 打印機器的配置詳情
status ls 列出所有機器和他們的狀態
info inspect 顯示一個機器的詳情
ip ip 顯示機器的 ip 地址
shellinit env 顯示你跟機器交互配置的shell指令
delete rm 刪除一個機器
download - 沒有對等指令
upgrade upgrade 更新一個機器的Docker客戶端到一個最新穩定版本

在 Mac OS X 上的一個 Docker 例子

通過這一小節,在一個虛擬機上,嘗試一些實戰性的容器任務。此時此刻,你應該擁有一個正在運行中的虛擬機並已經通過你的shell與它連接成功。爲了校驗上述的條件,執行下面的命令:

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

ACTIVE 機器,在這裏是 default ,你的一個環境將指向它。

訪問容器的端口

  1. 啓動一個 NGINX 容器,在你的Docker主機上。

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

    通常,docker run 命令會創建一個容器,運行它,之後退出。-d 標記讓容器在後臺一直運行,在 docker run 命令執行完後。-P 標記發佈容器需要暴露的端口到你的本地主機;這樣,你就可以從你的Mac訪問到它們。

  2. 使用 docker ps 命令可以查看運行中的容器:

    CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                           NAMES
    5fb65ff765e9        nginx:latest        "nginx -g 'daemon of   3 minutes ago       Up 3 minutes        0.0.0.0:49156->443/tcp, 0.0.0.0:49157->80/tcp   web
    

    此刻,你可以看到 nginx 正以守護模式運行中。

  3. 觀察容器的端口。

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

    這裏告訴你,web 容器的端口 80 被映射到你的Docker主機上的 49157 端口上。

  4. 輸入 http://localhost:49157 地址(localhost 和 0.0.0.0 等同) 在你的瀏覽器內:

    它並沒有正常的運行。這是因爲,並沒有Docker Daemon在你的 DOCKER_HOST 地址上工作。但是,你可以把地址替換成你的Docker虛擬機地址,重試一下。

  5. 獲取 default 虛擬記得地址。

    $ docker-machine ip default
    192.168.59.103
    
  6. 在你的瀏覽器內,輸入 http://192.168.59.103:49157 地址:

    成功!

  7. 想停止並刪除你正在運行中的 nginx 容器,按如下操作即可:

    $ docker stop web
    $ docker rm web
    

掛載一個數據捲到容器上

當你創啓一個容器時,它會通過虛擬機系統的分享了你的/Users/username 目錄。你可以使用這個分享指向的掛載目錄到你的容器上。下一個練習會向你演示如何做到這點。

  1. 更改你的用戶 $HOME 目錄。

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

    $ mkdir site
    
  3. 進入新建的 site 目錄裏。

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

    $ echo "my new site" > index.html
    
  5. 啓動一個新的 nginx 容器並使用 site替換它的 html 文件。

    $ docker run -d -P -v $HOME/site:/usr/share/nginx/html \
      --name mysite nginx
    
  6. 獲取 mysite 容器的端口。

    $ docker port mysite
    80/tcp -> 0.0.0.0:49166
    443/tcp -> 0.0.0.0:49165
    
  7. 在瀏覽器中打開上面的地址:

  8. 嘗試在你的 $HOME/site 實時地添加一個新的頁面。

    $ echo "This is cool" > cool.html
    
  9. 在瀏覽器裏打開新頁面。

  10. 停止並刪除你運行中的 mysite 容器。

    $ docker stop mysite
    $ docker rm mysite
    

升級 Docker Toolbox

Docker Toolbox安裝包下載,並重新安裝即可。具體可以參考上述的諸多步驟。

卸載 Docker 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 刪除相關的目錄。

  3. 從你的“ Applications”文件夾中移除Docker快速啓動終端和Kitematic。

  4. 從 /usr/local/bin 文件夾中移除 docker 、 docker-compose 和 docker-machine 命令。

    $ rm /usr/local/bin/docker
    
  5. 從你的系統中刪除~/.docker 文件夾。

知識拓展

使用 docker-machine help 列出Docker Machine的完整的命令行幫助文檔。獲取更多關於使用SSH或SCP訪問一個虛擬機的信息,請移步到 Docker Machine文檔

你可以通過 Docker用戶指南繼續學習。如果你Kitematic GUI的使用感興趣,請移步到Kitematic用戶指南


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