Docker的安裝,配置,更新和卸載


我們可以在Linux中安裝Docker並運行Hello world應用程序。通過下面這些操作,我們將會學到更多有關於Docker的基礎特征。我們將會學到如何:

  • 安裝Docker引擎
  • 在一個容器中運行軟件鏡像
  • 在Docker Hub中瀏覽一個鏡像
  • 創建你的鏡像,並且在容器中運行它
  • 創建一個Docker Hub賬戶和一個鏡像庫
  • 創建你自己的鏡像
  • 將你的鏡像放到Docker Hub中讓其他人使用

該開始教程是用於減少用戶碰到問題的可能性,為了能夠測試成功,一定要遵循下面說明的步驟來進行操作。該過程將會消耗大約45分鍾。

確保你了解。。。

該開始教程使用命令行來進行相應的操作。你不必特別熟悉命令行,但是你應該了解如何打開shell或終端,並且在那個環境中運行基本的命令。它幫助我們了解如何去導航一個目錄樹,操作文件,列舉運行的進程等等。

安裝Docker(在Ubuntu中)


Ubuntu

Docker支持下面的這些Ubuntu操作系統:

  • Ubuntu Xenial 16.04 (LTS)
  • Ubuntu Wily 15.10
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Precise 12.04 (LTS)

該頁指導你使用Docker管理發行包和安裝機制來安裝Docker。使用這些包能夠確保你獲得最新的Docker發行版。如果你希望使用Ubuntu管理包進行安裝,可以查閱一個UBuntu資料。

注意:Ubuntu 14.10和15.04存在Docker的APT庫,但是並不官方支持。

要求

不管你的Ubuntu版本是什么,Docker要求64位系統安裝。除此之外,你的內核最低版本要求為3.10。最近的3.10的較小版本或最新的維護版本都是可以接受的。

版本低於3.10的內核缺少一些運行Docker容器的特征。這些較老版本的內核被了解到,存在一些bug,這些bug將會導致數據丟失;並且在特定條件下,會導致頻繁的恐慌。

你可以打開一個終端,使用uname -r來檢查你的當前內核版本。

bobo@bobo:~$ uname -r 3.19.0-15-generic
注意:如果你之前使用`APT`安裝了Docker,一定要確定更新你的`APT`源碼到最新的Docker庫。

更新你的apt源

Docker的APT庫包含Docker 1.7.1和更高版本。為了設置APT從最新的庫中使用包:

     1、使用sudoroot權限,作為一個用戶登陸你的機器

     2、更新包信息,確定APT以https方法工作,並且CA證書已被安裝。

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

     3、添加新的GPG

$ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

     4、使用你喜歡的編輯器打開/etc/apt/sources.list.d/docker.list文件。如果文件不存在,則創建他。

sh -c "echo deb https://get.docker.com/ubuntu docker main>/etc/apt/sources.list.d/docker.list"

     5、更新APT包索引。

$ sudo apt-get update

     6、如果舊的repo存在則清除,第一次安裝可以跳過

$ sudo apt-get purge lxc-docker

   7、安裝

apt-get install lxc-docker

 

 

   8、啟動docker

sudo service docker start

   9、驗證docker被正確安裝

$ sudo docker run hello-world

該命令會向容器中下載一個測試鏡像並且運行它。當容器運行成功,就會打印一個信息,然后退出。


bobo@bobo:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 03f4658f8b78: Pull complete a3ed95caeb02: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest Hello from Docker. This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/userguide/ 

可選配置

該小節包含可選的過程,用於配置你的Ubuntu更好的運行Docker。

  • 創建docker組
  • 適應內存和交換
  • 使能UFW轉發
  • 配置一個DNS服務器來用
  • 配置Docker開機自啟

創建一個Docker組

docker域是和Unix的一個套接字綁定的,而不是一個TCP端口。默認情況下,Unix套接字是屬於用戶root的,並且其他用戶能夠使用sudo訪問他。處於這個原因,docker域會一直以root用戶運行。

為了避免在使用docker命令的時候必須要使用sudo,我們需要創建一個Unix組稱作docker,並且向該組中添加用戶。當docker域啟動的時候,Unix套接字的讀寫所有權由docker組擁有。

警告:`docker`組和`root`用戶是平等的。

為了創建docker組和添加你的用戶:

  1. 使用sudo權限登陸Ubuntu。
  2. 創建docker
$ sudo groupadd docker
  1. docker組中添加你的用戶
$ sudo usermod -aG docker ubuntu
  1. 登出再登入 
    這個確保你的用戶以正確的權限運行。
  2. 不使用sudo運行docker來驗證您的工作。
$ docker run hello-world

如果失敗信息和下面類似:

Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

檢查DOCKER_HOST環境變量是否被設置,如果為設置,則重新設置。

調整內存和交換分區

當用戶運行Docker的時候,當運行一個鏡像的時候,他們可能會看到下面這些信息:

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

為了阻止這些信息,就需要使能你系統上的內存和交換分區(memory and swap accounting)。使能內存和交換分區能夠引起內存開銷和降解性能,即使Docker並沒有在使用。內存開銷大約是所有可用內存的1%。性能大約降解10%。

為了在使用GNU GRUB的系統上使能內存和交換分區,遵循下面的步驟:

  1. 作為一個用戶使用sudo特權來登陸Ubuntu。
  2. 編輯/etc/default/grub文件。
  3. 像下面這樣設置GRUB_CMDLINE_LINUX值。
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
  1. 保存並關閉文件
  2. 更新GRUB
$ sudo update-grub
  1. 重啟系統

使能UFW轉發

如果在你運行Docker,在同樣的宿主機上使用UFW(Uncomplicated Firewall)的時候,你將需要做額外的配置。Docker使用一個橋來管理容器網絡。默認情況下,UFW丟棄所有的轉發消息。結果是,當UFW被使能了,Docker要想去運行,你必須設置UFW的轉發策略。

UFW的默認設置規則是拒絕所有的進來的消息。如果你想要另一個主機到達你的容器,你需要在Docker端口上允許進入的連接。如果LTS被使能,則Docker的默認端口為2376,如果沒有,則端口為2375。如果TLS沒有被使能,通信是未被加密的。默認情況下,Docker是在TLS未被使能的情況下運行的。

為了配置UFW和在Docker端口上允許進入的連接:

  1. 作為用戶以sudo 登陸。
  2. 驗證UFW是否被安裝和被使能。
$ sudo ufw status
  1. 打開/etc/default/ufw並編輯。
$ sudo nano /etc/default/ufw
  1. 設置DEFAULT_FORWARD_POLICY策略為:
DEFAULT_FORWARD_POLICY="ACCEPT"
  1. 保存並關閉文件
  2. 重新加載UFW來使用新的設置。
$ sudo ufw reload
  1. 在Docker端口上允許進入的連接。
$ sudo ufw allow 2375/tcp

配置一個DNS服務器讓Docker使用

在桌面上運行Ubuntu系統或Ubuntu衍生系統,在/etc/resolv.conf文件中,典型的使用127.0.0.1作為默認的nameserver。網絡管理器也會設置dnsmasq來使用真實的DNS服務器,並且在/etc/resolv.conf中設置nameserver 127.0.0.1

當使用這些配置在桌面機器上開啟容器,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默認使用一個外部的域名服務器。

為了避免這個警告,你可以指定一個DNS服務器讓Docker容器來使用。或者是,你可以在網絡管理器中禁用dnsmasq。不過,禁用dnsmasq可能會導致DNS在一些網絡中變慢。

下面的指令描述了如何配置運行在Ubuntu14.10或較低版本的上的Docker域。Ubuntu 15.04和更高版本使用systemd作為啟動和服務管理器。有關與systemd的配置可以參考這篇文章,control and configure Docker with systemd

為了指定一個DNS服務器讓Docker使用:

  1. 作為一個用戶身份以sudo方式登陸系統。
  2. 打開/etc/default/docker文件編輯。
  3. 添加一個設置。
DOCKER_OPTS="--dns 8.8.8.8"

使用本地DNS服務器,例如 192.168.1.1替換8.8.8.8。你也可以指定多個DNS服務器。將他們之間用空格分離。例如:

--dns 8.8.8.8 --dns 192.168.1.1
警告:如果你正在使用連接多個網絡的電腦做這個事情,確定要選擇一個公共DNS服務器。
  1. 保存並關閉文件
  2. 重啟Docker域。
$ sudo restart docker

或者是,對之前的操作作為一個可選的選項,就是在網絡管理器中禁用dnsmasq

  1. 打開/etc/NetworkManager/NetworkManager.conf文件。
  2. 注釋掉dns=dnsmasq這一行。
  3. 保存並且關閉文件。
  4. 重啟網絡管理器和Docker.
$ sudo restart network-manager $ sudo restart docker

配置Docker開機自啟動

Ubuntu 15.04及以上系統使用systemd作為它的啟動和服務管理器,Ubuntu 14.10及其低版本使用upstart

對於15.04及其以上版本來說,為了配置docker域開機自啟,運行:

$ sudo systemctl enable docker

對於14.10及其較低版本,上述的安裝方法自動配置upstart開使docker域開機的時候自動啟動。

更新Docker

安裝最新版本的Docker使用apt-get:

$ sudo apt-get upgrade docker-engine

卸載

卸載Docker包:

$ sudo apt-get purge docker-engine

卸載Docker包及其以來不再需要使用下面的命令:

$ sudo apt-get autoremove --purge docker-engine

上面的命令不會移除鏡像,容器,卷或者是用戶創建的配置文件。如果你想刪除所有的鏡像,容器和卷,運行下面的命令:

$ rm -rf /var/lib/docker

你必須手動刪除用戶創建的配置文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM