Ubuntu16.04安裝docker

 轉載請註明出處:http://www.cnblogs.com/lighten/p/6034984.htmlhtml

  本篇主要翻譯一下官方指導ubuntu下安裝docker指南,方便查閱,官方指導網址:https://docs.docker.com/engine/installation/linux/ubuntulinux/ 。這篇文章主要指導你去安裝使用Docker-managed發佈包及其安裝機制。使用這些包確保你得到最近的docker官方發佈版本。若是你須要安裝使用Ubuntu-managed包,查閱Ubuntu文檔。linux

1.docker支持如下Ubuntu操做系統:

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

2.前置需求

    無論你是Ubuntu的哪一個版本,Docker須要64的操做系統。此外你的kernel內核至少要在3.10版本之上。最近的3.10小版本或者最新的維護版本也是能夠接受的。kernel3.10版本以前的系統缺乏一些特性來運行docker容器。這些舊版本有些已知的bugs會致使數據丟失而且在必定條件下會頻繁的故障。檢查你當前的kernel版本,打開終端,輸入ubuntu

    uname -rvim

   

  注意:若是你以前使用APT安裝過docker,爲了新版本的docker倉庫,確保你更新了APT源。安全

3.更新你的apt源

    Docker的APT倉庫包含1.7.1以及更高的版本。經過設置APT使用來自docker倉庫的包。服務器

    1)登錄機器,用戶必須使用sudo或者root權限。網絡

    2)打開終端架構

    3)更新包信息,確保APT能使用https方式工做,而且CA證書已安裝了socket

    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

相關文章
相關標籤/搜索