Mac 下 docker安裝


 http://www.th7.cn/system/mac/201405/56653.shtml

Mac 下 docker安裝 以及 處理錯誤Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 和 dial unix /var/run/docker.sock: no such file or directory

主機可以選擇系統鏡像快速創建主機,這比虛擬機更便捷了,我們本地也可以這么做了,因為有了Docker這個東西。它依賴於 LXC(Linux Container),從網絡上獲得配置好的 Linux 鏡像,很容易在隔離的系統中運行自己的應用。也因為它的底層核心是個 LXC,所以在 Mac OS X 下需要在 VirtualBox 中跑一個精小的 LXC(這里是一個Tiny Core Linux,完全在內存中運行,個頭只約 24MB,啟動時間小於 5 秒的boot2docker) 虛擬機。以后的通信過程就是 docker --> boot2docker --> container,端口或磁盤映射也是遵照這一關系。

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

1. 安裝VirtualBox, 不多講

2. 安裝 boot2docker

 

brew install boot2docker

 

 

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

 

3. 安裝 Docker

 

brew install docker

 

也可手工安裝

 

curl -o dockerhttp://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 的話

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 進到該虛擬機的控制台下

 

boot2docker_vm

 

上面看到 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


本文原始鏈接http://unmi.cc/mac-os-x-experience-docker/, 來自隔葉黃鶯 Unmi Blog

現在開始進入 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     #在另一個終端中用這個命令,可以看到運行實例,即容器

 

現在我們在容器的控制台上 oot@95903c1a2bf7:/#,可以安裝一個 apche2, curl 並啟動 apache2,來測試下

 

root@95903c1a2bf7:/# apt-get update
root@95903c1a2bf7:/# apt-get install apache2 curl
root@95903c1a2bf7:/# apachectl start
root@95903c1a2bf7:/# 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 運行的鏡像,需要新開一個終端來操作。

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

 

uqiu@localhost ~> docker ps
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),可以有兩種辦法

1)

 

boot2docker ssh -L 50080:localhost:40080

docker run -i -t -p 40080:80 learn/tutorial
root@c79b5070a972:/# apachectl start

 

然后在 Mac 的瀏覽器中打開 http://localhost:50080

port-mapping-docker_1

2)

 

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

docker run -i -t -p 40080:80 learn/tutorial
root@c79b5070a972:/# apachectl start

 

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

boot2docker-vm-port

也可以直接在這里編輯端口映射關系

在 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 快速入門


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM