首頁 > 軟體

Ubuntu 16.04安裝部署Docker指南

2020-06-16 17:13:05

本篇主要翻譯一下官方指導Ubuntu下安裝Docker指南,方便查閱,官方指導網址 。這篇文章主要指導你去安裝使用Docker-managed發布包及其安裝機制。使用這些包確保你獲得最近的docker官方發布版本。如果你需要安裝使用Ubuntu-managed包,查閱Ubuntu文件。

1.docker支援以下Ubuntu作業系統:

   Ubuntu Xenial 16.04[LTS]  Ubuntu Trusty 14.04[LTS]  Ubuntu Precise 12.04[LTS]

2.前置需求

    不管你是Ubuntu的哪個版本,Docker需要64的作業系統。此外你的kernel核心至少要在3.10版本之上。最近的3.10小版本或者最新的維護版本也是可以接受的。kernel3.10版本之前的系統缺少一些特性來執行docker容器。這些舊版本有些已知的bugs會導致資料丟失並且在一定條件下會頻繁的故障。檢查你當前的kernel版本,開啟終端,輸入

    uname -r

   

  注意:如果你之前使用APT安裝過docker,為了新版本的docker倉庫,確保你更新了APT源。

3.更新你的apt源

    Docker的APT倉庫包含1.7.1以及更高的版本。通過設定APT使用來自docker倉庫的包。

    1)登陸機器,使用者必須使用sudo或者root許可權。

    2)開啟終端

    3)更新包資訊,確保APT能使用https方式工作,並且CA證書已安裝了

    sudo apt-get update

    sudo apt-get install apt-transport-https ca-certificates

    出現這個問題可能是有另一個程式正在執行,導致資源被鎖不可用。而導致資源被鎖的原因可能是上次執行安裝或更新沒有正常完成,解決辦法就是刪掉。

    sudo rm /var/cache/apt/archives/lock

    sudo rm /var/lib/dpkg/lock

    4)新增一個新的GPG金鑰

      sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

    5)找到合適你的Ubuntu作業系統的鍵,這個鍵決定APT將搜尋哪個包。可能的鍵有:

    Ubuntu version    Repository

    Precise 12.04     deb https://apt.dockerproject.org/repoubuntu-precise main

    Trusty 14.04      deb https://apt.dockerproject.org/repoubuntu-trusty main

    Xenial 16.04      deb https://apt.dockerproject.org/repoubuntu-xenial main

    注意:docker沒有為所有的架構提供包,Binary artifacts are built nightly,你可以從https://master.dockerproject.org. 處下載下來。在一個多架構的系統上安裝docker,為鍵新增一個[arch=]條款。更多細節參考Debian Multiarch維基百科。

    6)執行下面的命令,用預留位置<REPO> 為你的作業系統替換鍵。

    echo "<REPO>" | sudo tee /etc/apt/sources.list.d/docker.list

    比如你是16.04將上面命令的<REPO>

    替換成deb https://apt.dockerproject.org/repoubuntu-xenial main 執行那條命令,就在那個資料夾下建立了一個docker.list檔案,裡面的內容就是

    deb https://apt.dockerproject.org/repoubuntu-xenial main

    7)更新APT包索引

    sudo apt-get update

    8)校驗APT是從一個正確的倉庫拉取安裝包。

    當執行下面命令的時候,這個鍵會返回你目前可以安裝的docker版本,每個鍵都包括URL:https://apt.dockerproject.org/repo/。下面是擷取的部分輸出內容。

    命令:apt-cache policy docker-engine

    現在當你執行apt-get upgrade的時候,APT就會從新的倉庫拉安裝包。

4.某些Ubuntu版本需要的前置操作

    Ubuntu Xenial 16.04[LTS]  Ubuntu Trusty 14.04[LTS]

    這兩個版本記得安裝linux-iamge-extra-*的kernel包。這個包允許你使用aufs儲存驅動。

    sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

    Ubuntu Precise 12.04[LTS]

    對於這個版本,你需要3.13以上的kernel版本,你必須升級。下面表格指導你需要哪些包:

    你可以執行以下命令:

    sudo apt-get install linux-image-generic-lts-trusty

    sudo reboot

5.安裝

   1)登陸系統,用你的賬號使用sudo全許可權

   2)更新APT包索引:sudo apt-get update

   3)安裝docker:sudo apt-get install docker-engine

   4)開啟docker後天進程:sudo service docker start

   5)校驗docker是否安裝成功:sudo docker run hello-world

   這個命令會下載一個測試映象,並且執行在一個容器中。當容器執行時,他會列印一些資訊,並且退出。

6.可選設定

6.1 建立一個docker組

  docker後台進程是系結的Unix的socket而不是TCP埠。預設情況下,Unix的socket屬於使用者root,其它使用者要使用要通過sudo命令。由於這個原因,docker daemon通常使用root使用者執行。

  為了避免使用sudo當你使用docker命令的時候,建立一個Unix組名為docker並且新增使用者。當docker daemon啟動,它會分配Unix socket讀寫許可權給所屬的docker組。

  注意:docker組不等價於使用者root,如果想要知道的更多關於安全影響,檢視docker daemon attack surface

  sudo groupadd docker

  sudo usermod -aG docker $USER

  退出再重進,確保該使用者有正確的許可權。

  校驗生效,通過執行docker命令不帶sudo:docker run hello-world,如果失敗會有以下類似的資訊:Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?確保DOCKER_HOST環境變數沒有設定。如果有取消它。

6.2 調整記憶體和交換區計算

   當使用者執行docker時,他們可能在使用一個映象時看見下面的資訊:

  WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

  為了阻止這些資訊,在你的系統中啟用記憶體和交換區計算。這個操作會導致即便docker沒有使用也有記憶體開銷以及效能下降。記憶體開銷大概是總記憶體的1%。效能降低了大約10%。

  修改/etc/default/grub檔案。vi或者vim命令都行,設定GRUB_CMDLINE_LINUX的值,如下:GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"。儲存檔案並關閉。sudo update-grub更新啟動項。reboot重新啟動你的系統。

6.3啟動UFW轉發

  當你執行docker時,在同一台主機上使用UFW(Uncomplicated Firewall) ,你需要額外的設定。docker使用橋接方式來管理容器的網路。預設情況下,UFW廢棄所有的轉發流量。因此,docker執行時UFW可以使用,你必須設定合適UFW的轉發規則。

  UFW預設設定規則拒絕了所有傳入流量。如果你想要從另一個主機到達你的容器需要允許連線docker的埠。docker的預設埠是2376如果TLS啟用,如果沒有啟動則是2375,對談是不加密的。預設情況,docker執行在沒有TLS啟動的情況下。

  為了設定UFW並且允許進入的連線docker埠:

  檢查UFW是否安裝並啟用:sudo ufw status

  開啟/etc/default/ufw檔案並編輯:sudo nano /etc/default/ufw

  設定DEFAULT_FORWARD_POLICY:DEFAULT_FORWARD_POLICY="ACCEPT"

  儲存退出並重新啟動使用新的設定:sudo ufw reload

  允許所有的連線到docker埠:sudo ufw allow 2375/tcp

6.4 為使用docker設定DNS伺服器

  系統執行桌面的Ubuntu或者Ubuntu衍生產品通常使用127.0.0.1作為預設的nameserver檔案/etc/resolv.conf檔案中。NetworkManager也通常設定dnsmasq nameserver 127.0.0.1在/etc/resolv.conf。

  當在桌面機器執行容器,使用這些設定時,docker的使用者會看見這些警告:

  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命名伺服器。此外docker預設使用一個額外的nameserver。

  為了避免這個警告,你可以在使用docker容器的時候指定一個DNS伺服器。或者你可以禁用dnsmasq在NetworkManager中。但是,禁用會導致DNS協定在某些網路中變慢。

  下面的說明描述了如何在Ubuntu14.0或以下版本設定docker守護行程。Ubuntu15.04及之上的使用systemd用於啟動項和服務管理。指導通過使用systemd來設定和控制一個守護行程。

  設定指定的DNS服務:

  開啟/etc/default/docker檔案並編輯:sudo nano /etc/default/docker,新增設定項:DOCKER_OPTS="--dns 8.8.8.8"。將8.8.8.8用一個原生的DNS服務例如192.168.1.1替換。你也可以設定多個DNS伺服器。用空格隔開它們,如:--dns 8.8.8.8 --dns 192.168.1.1。警告:當你在筆電連線了不同網路的情況時做這些操作,確保選擇一個公用的DNS伺服器。儲存檔案並退出,重新啟動docker守護行程:sudo service docker restart。

  或者另一個選擇,禁用dnsmasq在網路管理器中,這可能導致你的網速變慢:

  開啟/etc/NetworkManager/NetworkManager.conf檔案,編輯它:sudo nano /etc/NetworkManager/NetworkManager.conf。找到行dns=dnsmasq,注釋掉。儲存關閉檔案,重新啟動網路管理器和docker.sudo restart network-manager  sudo restart docker。

6.5 設定docker引導啟動

  Ubuntu15.04之後使用systemd作為引導啟動和服務管理,14.10及以下版本是upstart。15.04以上,需要設定docker守護行程boot啟動,執行命令:sudo systemctl enable docker

  14.10及以下版本安裝方法會自動設定upstart來啟動docke daemon在boot。

7 升級解除安裝docker

  升級:sudo apt-get upgrade docker-engine

  解除安裝:sudo apt-get purge docker-engine

  解除安裝及依賴:sudo apt-get autoremove --purge docker-engine

  上述命令不會解除安裝images,containers,volumes或者使用者自己建立的組態檔。你如果想刪除這些東??,執行下面的命令:

  rm -rf /var/lib/docker

  安裝最簡單的方法是:sudo apt-get update   sudo apt-get install docker

更多Docker相關教學見以下內容

Docker安裝應用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04安裝Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

Ubuntu 15.04下安裝Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

Docker 安裝範例 http://www.linuxidc.com/Linux/2017-04/142666.htm

Docker 建立基礎映象  http://www.linuxidc.com/Linux/2017-05/144112.htm

在 Ubuntu 15.04 上如何安裝Docker及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04上Docker使用手記 http://www.linuxidc.com/Linux/2016-12/138490.htm

使用Docker分分鐘啟動常用應用  http://www.linuxidc.com/Linux/2017-04/142649.htm

Ubuntu 16.04下Docker修改組態檔不生效解決辦法  http://www.linuxidc.com/Linux/2017-05/143862.htm 


IT145.com E-mail:sddin#qq.com