1. 程式人生 > >docker 1-安裝及環境配置

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 來管理。
根據需要,此處略。

References