docker 1-安裝及環境配置
Preparation
申請AWS 雲伺服器例項
申請AWS ES2 例項,選擇 ubuntu 14.04版作業系統;
配置訪問許可權及設定SSH金鑰;
配置並通過SSH訪問伺服器例項後臺。
檢測linux 核心版本
Docker只支援64-bit OS,對ubuntu OS的核心版本要求是不低於3.10。
檢視當前核心版本:
$ uname -r
3.11.0-15-generic
更新apt 安裝源
更新 apt 並配置CA證書
以管理員身份登入OS,更新包資訊,並確保APT支援https,安裝CA證書。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
安裝 GPG 金鑰
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
建立docker.list
開啟 /etc/apt/sources.list.d/docker.list
檔案,若不存在則建立。
編輯該檔案,新增或配置訪問地址(Ubuntu Trusty 14.04):deb https://apt.dockerproject.org/repo ubuntu-trusty main
儲存完畢。
更新apt 資源包目錄
更新 APT 資源包目錄:sudo apt-get update
清除舊的檔案:sudo apt-get purge lxc-docker
驗證APT是否能從正確的遠端資源庫拉取檔案:apt-cache policy docker-engine
現在,如果執行 apt-get upgrade
時,APT將從新的遠端資源庫拉取資料。
推薦安裝linux-image-extra-*核心包
對於Ubuntu Trusty(14.04), Wily(15.10)和Xenial(16.04),建議安裝linux核心包linux-image-extra-*
aufs
格式的儲存驅動。此步為可選項。 安裝方法:
sudo apt-get update
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
Installation
簡單的安裝步驟
以管理員身份登入Ubuntu
更新 APT 資源包目錄
sudo apt-get update
安裝Docker
sudo apt-get install docker-engine
開啟docker守護程序:
sudo service docker start
驗證docker是否安裝成功:
sudo docker run hello-world
該命令將下載一個測試映象檔案,並在docker容器中執行。若安裝成功,該命令將輸出hello world訊息。
可選配置項
建立docker使用者組並配置管理員許可權
檢查是否已經自動建立了 docker使用者組,若沒有,則手動建立:sudo groupadd docker
將當前使用者加入到docker組:sudo usermod -aG docker $USER
然後重新登陸 terminal,現在,可以直接執行docker命令,而不需要 sudo
了。
調整記憶體配置和swap accounting
根據需要,此處略。
啟用 UFW 埠轉發
假如在docker執行伺服器上啟用了 UFW(簡單防火牆),則需要進行一些額外配置。Docker通過橋接方式管理容器網路。UFW預設丟棄所有的埠轉發請求,因此,一旦開啟UFW,需要為Docker配置埠轉發策略。另外,UFW預設拒絕所有訪問請求。若希望從外部主機訪問當前容器,則應配置允許訪問docker所在的埠。Docker埠預設為2376
埠(啟用TLS時),或者2375
埠(未啟用TLS)。TLS未啟用時,通訊為非加密的。Docker預設不啟用TLS。
配置UFW允許外部訪問Docker埠的方法:
1). 檢測ufw是否已經安裝,及是否已經啟用
$ sudo ufw status
Status: inactive # 表示未啟用
2). 若已經安裝且啟用,則開啟 /etc/default/ufw
並設定:DEFAULT_FORWARD_POLICY="ACCEPT"
3). 重新載入 UFW:sudo ufw reload
4). 允許訪問Docker埠:sudo ufw allow 2375/tcp
配置Docker使用的DNS伺服器
Ubuntu系統預設採用127.0.0.1
作為預設的 nameserver
。開啟/etc/resolv.conf
檔案,可以看到:nameserver 127.0.1
。NetworkManager 服務通過配置dnsmasq
來訪問實際的DNS伺服器連線,並且同樣使用了上述nameserver的配置檔案。
在臺式機上執行Docker容器時,Docker會提示如下warning資訊:
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
這是因為Docker容器無法訪問本地DNS nameserver,實際上Docker預設使用了外部的nameserver。為解決這個問題,我們可以指定一個DNS伺服器給Docker容器,或禁用NetworkManager的dnsmasq
。如果禁用dnsmasq,可能會導致在某些網路條件下的DNS解析變慢。
以下是配置Docker守護程序,為其指定DNS的具體步驟:
首先,開啟並編輯docker配置檔案:sudo vi /etc/default/docker
,增加以下配置項:
DOCKER_OPTS="--dns 8.8.8.8 --dns 192.168.1.1"
此處可以配置多個DNS伺服器,通過空格分隔。
然後,儲存並關閉檔案,重啟Docker守護程序:sudo service docker restart
另一個方法是禁掉NetworkManager的 dnsmasq
,具體步驟:
首先,開啟sudo nano /etc/NetworkManager/NetworkManager.conf
檔案,註釋掉:dns=dnsmasq
這一行。
儲存檔案,然後重啟 NetworkManager 和Docker:
sudo restart network-manager
sudo restart docker
配置Docker隨系統自啟動
Ubuntu 15.04版本及以上,採用systemd
來管理啟動項;而對於14.10及以下版本,則採用 upstart
來管理。
根據需要,此處略。