Mac OS X 下安裝使用 Docker

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   java   for   

它依賴於 LXC(Linux Container),能從網路上獲得配置好的 Linux 鏡像,非常容易在隔離的系統中運行自己的應用。也因為它的底層核心是個 LXC,所以在 Mac OS X 下需要在 VirtualBox 中跑一個精小的 LXC(這裡是一個 Tiny Core Linux,完全在記憶體中運行,個頭只約 24MB,啟動時間小於 5 秒的 boot2docker) 虛擬機器,構建在 VirtualBox 中。以後的通訊過程就是 docker --> boot2docker --> container,連接埠或磁碟映射也是遵照這一關係。

理解了上面的關係,開始說說 Docker 安裝過程

1. 安裝 VirtualBox, 不多講, 因要在它當中建立一個 boot2docker-vm 虛擬機器

2. 安裝 boot2docker

brew install boot2docker

你也可以手工安裝

curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker; chmod +x boot2docker; sudo mv boot2docker /usr/local/bin

3. 安裝 Docker

brew install docker

也可手工安裝

curl -o docker http://get.docker.io/builds/Darwin/x86_64/docker-latest; chmod +x docker; sudo cp docker /usr/local/bin

4. 配置 Docker 用戶端

export DOCKER_HOST=tcp://127.0.0.1:4243

把它寫到 ~/.bash_profile 中,如果你是用的 bash 的話。我工作在 fish 下,所以在 ~/.config/fish/config.fish 中加了 set -x DOCKER_HOST tcp://127.0.0.1:4243

5. boot2docker 初始化與啟動

boot2docker init

完成後就能在 VirtualBox 中看到一個叫做 boot2docker-vm 的虛擬機器,以後只需用 boot2docker 命令來控制這個虛擬機器的行為,啟動,停止等。

boot2docker up

啟動,boot2docker-vm 虛擬機器,我們能在 VirtualBox 中看到該虛擬機器變成 Running 狀態

直接執行 boot2docker 可以看到可用的參數

Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

6. 啟動 Docker 守護進程

sudo docker -d

這時可執行

boot2docker ssh,輸入密碼  tcuser 進到該虛擬機器的控制台下,如果要使用者名稱的話請輸入 docker

上面看到 Mac 啟動了 4243 連接埠,在 boot2docker 虛擬機器中也有 4243 連接埠,並在 /var/run/docker.sock 上監聽。藉此回顧下 docker 的通訊過程,dock 命令是與 Docker daemon 在  Mac 上開啟的  4243 連接埠通訊,該連接埠映射到 boot2docker 的  4243 連接埠上,進而通過 /var/run/docker.sock 與其中的容器進行通訊。

所以在執行  docker version 時如果沒有啟動 Docker daemon 會提示

2014/05/16 06:52:48 Cannot connect to the Docker daemon. Is ‘docker -d‘ running on this host?

如果沒有啟動 boot2docker 會得到提示

Get http:///var/run/docker.sock/v1.11/version: dial unix /var/run/docker.sock: no such file or directory

Mac OS X -- boot2docker -- container 三者之間的關係,這張圖很好的說明了

圖片來自:http://tech.uc.cn/?p=2726

上面  boot2docker, docker 都準備就緒了, 現在開始進入 dock  的操作了,有關於 docker 的命令可以參看這裡 http://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html。

1. 下載鏡像,並載入啟動容器

docker images    #現在沒有一個鏡像
docker pull learn/tutorial     #我們把這個拉下來實驗,可用 docker search ubuntu 找到所有與 ubuntu 有關的鏡像
docker run -i -t  learn/tutorial  #載入鏡像 learn/tutorial 並進到 shell 下,這樣就直接連接到該容器中,退出後容器也退了
docker ps     #在另一個終端中用這個命令,可以看到運行執行個體,即容器

現在我們在容器的控制台上 [email protected]:/#,可以安裝一個 apche2, curl 並啟動 apache2,來測試下

[email protected]:/# apt-get update
[email protected]:/# apt-get install apache2 curl
[email protected]:/# apachectl start
[email protected]:/# curl http://localhost
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Apache2 正常啟動了,在容器內可訪問。但現在還無法從 Mac OS X 上對該 apache 服務進行訪問,這需要連接埠映射,有兩種方式。不過在連接埠映射之前還需儲存下鏡像的修改。

2. 儲存鏡像

如果前面用 docker run -i -t learn/tutorial 啟動並執行鏡像

在運行該鏡像的容器中安裝了軟體,需要把新的內容儲存到該鏡像中去,否則下次啟動該鏡像又恢複成原樣

[email protected] ~> docker ps -l
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
95903c1a2bf7        learn/tutorial:latest   /bin/bash           6 minutes ago       Up 5 minutes        80/tcp              thirsty_colden

看到容器的 ID,然後執行

docker commit 95903c1a2bf7 learn/tutorial:latest  #把當前容器的修改提交到鏡像 learn/tutorial  中去

以後再次運行該鏡像就有了最新安裝的內容了。

2. 連接埠映射

比如我們現在要做的映射關係是 Mac OS X(50080) --> boot2docker(40080) --> container(80),如:

圖片修改自:http://tech.uc.cn/?p=2726

可以有兩種辦法

1)

boot2docker ssh -L 50080:localhost:40080  #這條命令可以在  boot2docker-vm  運行時執行,建立多個不同的映射就是執行多次

docker run -i -t -p 40080:80 learn/tutorial
[email protected]:/# apachectl start

然後在 Mac 的瀏覽器中開啟 http://localhost:50080

2)

VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port_50080:80,tcp,,50080,,40080"

docker run -i -t -p 40080:80 learn/tutorial
[email protected]:/# apachectl start

這是直接修改了  boot2docker-vm 的配置,可以在 VirtualBox 中看到這條配置,配置 nat 命令見 http://www.virtualbox.org/manual/ch06.html#natforward. 也能建立許多的連接埠映射

還能直接在這裡編輯連接埠映射關係

Docker  的世界很精彩,其他內容基本就是怎麼用好 Docker 命令,如管理鏡像,容器,建立自己的鏡像; Docker 有三種運行命令的方式,短暫方式,互動方式,daemon方式; 使用 ssh 來管理容器等等。

在 Mac 下使用 Docker 除了可用 boot2docker 作為 LXC,還有個替代品 VAGRANT 。

參考:

1. 利用Docker構建開發環境
2. Docker學習筆記之一,搭建一個JAVA Tomcat運行環境
3. Installing Docker on Mac OS X
4. https://github.com/boot2docker/boot2docker
5. Docker 快速入門

Mac OS X 下安裝使用 Docker

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.