(提示:對docker感興趣的朋友可以加我的微信ghostcloud2016,然後我把你加到我們的一個docker愛好者社群裡面。)
docker最核心的程式是docker engine,根據參數,它既可以作為背景daemon運作,也可以作為指令行工具使用。
docker本身是基于linux核心的,是以隻要核心版本足夠新,一般大于3.10左右,就可以運作。各種系統的安裝方式基本相同,隻是針對各系統的程序管理或者目錄結構略有不同。下面是docker在linux系統下的實體邏輯結構:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5Ce15Was9lbv9lclt2YvR2LcBDMwQjO0N3boxWYj9Gbvw1LcpDc0RHaiojIsJye.png)
在所有系統中,docker對ubuntu的支援是最好的,是以如果使用docker,我推薦都适用ubuntu系統。ubuntu系統的可視化、安裝以及核心的更新,我認為都是最好的。docker支援的ubuntu系統:
ubuntu wily 15.10
ubuntu vivid 15.04
ubuntu trusty 14.04 (lts)
ubuntu precise 12.04 (lts) 環境要求:
64位系統
3.10以上linux核心,具體可以根據uname –r進行檢視
具體安裝步驟:
更新apt源
删除舊版本docker
檢查docker的apt源是否正常
不同版本的處理
重新開機系統(如果沒有安裝核心包,忽略本條)
安裝docker-engine
其他配置
建立docker使用者
docker daemon預設綁定在unix socket上,而不是tcp的端口。而unix socket預設是屬于root使用者,是以其他使用者要通路該 socket需要通過sudo指令。如果想避免使用sudo,你需要将目前使用者添加到docker 使用者組。具體步驟:
調整memory和swap的配額
有時候你在啟動時會出現:
這個提示說明,你目前的核心不支援cgroup對swap的控制。如果需要支援,會使用大約1%的系統總記憶體,同時會有10%左右的性能損失。具體步驟如下:
同ufw一起使用
如果你使用了ufw(uncomplicated firewall),你需要做額外的配置,因為ufw預設會屏蔽所有的forwarding流量,是以你需要zuo如下配置:
配置docker的dns
ubuntu系統預設使用127.0.0.1作為dns伺服器,具體配置檔案為/etc/resolv.conf。同時,還使用dnsmasq作為dns的緩存。當你啟動容器的時候,可能會遇到下面的警告:
這個警告說明docker容器不能使用主機的本地dns,是以使用外部的預設dns(8.8.8.8,8.8.4.4)這兩個位址都是google的免費dns位址。如果想自己指定 dns,具體步驟如下:
讓docker随系統啟動
首先需要了解你所使用的系統用的什麼啟動管理工具,在ubuntu 15.04及其以上版本使用的是systemd,在14.10及其以下使用的是upstart。在15.04及以上版本需要執行:
在14.10以下,安裝程式會自動将docker加入到upstart中。
更新docker
解除安裝docker
centos 7.x及其以後版本
3.10以後版本
更新yum源:
下載下傳腳本并安裝:
啟動服務:
驗證docker:
更新源:
添加源及gpg key:
安裝docker-engine:
啟動docker daemon:
背景
mac osx下docker通過docker toolbox來進行安裝,docker toolbox是docker公司的一個工具包,裡面包括:
docker machine: 運作docker-machine程式
docker engine: docker可執行程式
docker compose: docker-compose程式
kitematic: docker gui
包含預定義的shell腳本,用于指令行運作環境
oracle vm virtualbox
由于docker daemon 使用了linux kernel的衆多特性,我們不能在os x本地運作docker,是以我們必須使用docker-machine來建立并關聯到一個虛拟機。這個虛拟機就是docker的實際運作環境。下面是docker在mac或windows下的實體邏輯結構
環境要求: os x 10.8及其以上版本
安裝toolbox
位址是https://www.docker.com/toolbox, 下載下傳完成後根據提示進行安裝。預設情況,docker toolbox安裝在/usr/local/bin,每個使用者都可以使用這些可執行程式,同時會安裝帶有docker運作環境的virtual box。
啟動docker machine 通過launchpad啟動程式:
執行程式後,會自動執行一段shell腳本啟動虛拟機并進入一個shell終端。
hello world, docker
我們先來執行一個最簡單的docker容器:
這個指令包含三部分:
docker - 所有docker指令的可執行程式,預設在/usr/local/bin/docker
run - docker 的子指令,該指令首先檢視本地是否有相應的鏡像,如果沒有将預設從docker hub進行拉取,之後再運作該鏡像
hello-world - 鏡像名稱,這個鏡像就是echo一句hello world
容器本身是一個簡化的經過裁減的linux系統,容器可以運作一個簡單指令,就像上例一樣;也可以運作比較複雜的應用程式,比如:資料庫,web背景等。那hello-world鏡像是由誰生成的呢?是docker官方生成的,通過docker容器,你可以在任何系統容器中運作鏡像。
查找image
你可以在docker hub首頁,或者本機通過指令行進行搜尋,一般我喜歡通過指令行進行搜尋。例如,搜尋ubuntu:
在搜尋結果中,你可以看到有的是通過"/"劃分的,有的沒有。凡是沒有"/"分級的就是docker hub自帶的鏡像;否則該鏡像就出自于某個docker hub使用者,從這裡你也可以看到,docker hub是一個public倉庫,你的任何鏡像,别人都可以搜尋到。是以,一定要注意安全,不要把敏感資訊放上去了。
拉取鏡像
我們嘗試拉取一個centos鏡像:
編譯image 除了拉取官方的image,也可以自己編譯image,編譯的方法和makefile類似。
建立dockerfile
編譯image
運作自己的image