Docker 官方安裝詳解

# 0x00 安裝熱身linux

- 針對CE版本git

Docker 分爲 CE 和 EE 版本, CE免費,EE收費,CE版以及可以知足咱們全部需求github

本文針對 CE 版本的安裝進行說明docker

- 系統說明centos

本文以 CentOS 7爲例進行安裝, 不要使用 CentOS 7 的 Archived版 和 測試版,由於不支持bash

- 源說明服務器

CentOS 的擴展源 (centos-extras) 必須啓用,默認也是啓用的,可是若是你以前關閉過它,須要從新啓用一下網絡

建議使用overlay2存儲引擎app

- 刪除舊版本的Dockercurl

默認 yum 安裝的 docker 或 docker-engine 版本好久,咱們先卸載掉

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

備註: /var/lib/docker/ 下面的 容器,鏡像,網絡,磁盤卷 會被保留

新的 docker 改成 docker-ce 也就是免費版的 docker

 

# 0x01 開始安裝

有三種安裝方式:

1. 經過設置網絡源,而後yum安裝,方便往後維護和升級 (推薦)

2. 下載RPM包手動安裝和升級,若是沒有網絡這種方法很實用

3. 使用自動化腳本安裝,適合在開發和測試環境

 

- 使用yum安裝

開始安裝以前須要設置一下 Docker 源,後面直接經過源安裝和升級

1. 安裝 yum-utils , yum-config-manager, device-mapper-persistent-data lvm2 (被 devicemapper存儲引擎依賴)

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

 

2. 設置官方 docker-ce.repo 源

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

2.5 下面幾個可選步驟

默認是 stable版,若是先試試 nighty 或者 test 能夠用下面的命令開啓或關閉

啓用 nightly版  

$ sudo yum-config-manager --enable docker-ce-nightly

 

啓用 test版

$ sudo yum-config-manager --enable docker-ce-test

 

禁用 nightly

$ sudo yum-config-manager --disable docker-ce-nightly

 

3. 開始安裝

3.1  廢話了那麼多,這一步纔是關鍵,默認安裝的是最新的,或者使用後面的步驟安裝指定的版本

 sudo yum install docker-ce docker-ce-cli containerd.io

這裏可能會提示 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 密鑰是否匹配

若是和這裏的同樣,能夠選擇接受。注意最新的版本多是不穩定的

Docker 這樣就安裝好了,但還沒啓用,默認建立了一個 docker 組,但沒有用戶在這個組上

 

3.2 指定具體版本的docker安裝

A.  可使用下面的命令,列出能夠從源裏安裝的全部docker版本,而且高到低排序

$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

每一個人看到的列表可能不同,取決於你啓用的庫,和你CentOS 的具體版本

 

B. 選擇具體的版本進行安裝

選擇方式就是用 - 進行銜接你要的版本號,看以下格式

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

 

好比這裏我安裝的是 18.09.5 版

$ sudo yum install docker-ce-18.09.5 docker-ce-cli-18.09.5 containerd.io

同樣執行完只是安裝了docker 還沒啓用,建立了暫時無用戶的 docker 組

 

4. 啓動docker

$ sudo systemctl start docker

 

5.驗證客戶端能正常使用,測試hello-world鏡像

$ sudo docker run hello-world

這步會從 docker-hub  (相似github) 上面拉去 hello-world鏡像,而後經過這個鏡像建立容器並運行

打印一個hello world就退出,也表明docker-cli能夠用

 

 

- 使用RPM安裝 (不推薦)

若是你的linux電腦沒有網絡(什麼年代了?沒網?),能夠用下載RPM包放到CentOS上手動安裝

1. 下載RPM包

而且想升級的話也須要從新到網上下載最新的安裝包

下載網址 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

若是不知道怎麼選,能夠參考下載下面三個包

docker-ce-cli-18.09.5-3.el7.x86_64.rpm

docker-ce-18.09.5-3.el7.x86_64.rpm

containerd.io-1.2.5-3.1.el7.x86_64.rpm

若是喜歡折騰想試試 nighty 的只要把 URL 裏的 stable 改爲 nighty 就行

 

2. 安裝RPM包

$ sudo yum install /path/to/package.rpm

執行完只是安裝了docker 還沒啓用,建立了暫時沒用戶的 docker 組

 

3.  啓動docker

$ sudo systemctl start docker

 

4. 驗證客戶端能正常使用,測試hello-world鏡像

$ sudo docker run hello-world

這步會從 docker-hub  (相似github) 上面拉去 hello-world鏡像,而後經過這個鏡像建立容器並運行

打印一個hello world就退出,也表明docker-cli能夠用

 

5.升級

記住想升級就要回到第1步網上從新下載最新安裝包,跟着步驟走,而後

$ sudo yum update /path/to/package.rpm

 

 

- 使用一鍵部署腳本安裝

官方提供了一鍵部署腳本  get.docker.com 和 test.docker.com 

建議使用 get 開頭的,這種方式避免交互很適合新手,這是docker-install 的源碼 docker-install repository.

在生產環境中,使用這些腳本是不推薦的,你須要瞭解其中的風險( 說白了出事別找我 ),風險以下:

  • The scripts require root or sudo privileges to run. Therefore, you should carefully examine and audit the scripts before running them.
  • The scripts attempt to detect your Linux distribution and version and configure your package management system for you. In addition, the scripts do not allow you to customize any installation parameters. This may lead to an unsupported configuration, either from Docker’s point of view or from your own organization’s guidelines and standards.
  • The scripts install all dependencies and recommendations of the package manager without asking for confirmation. This may install a large number of packages, depending on the current configuration of your host machine.
  • The script does not provide options to specify which version of Docker to install, and installs the latest version that is released in the 「edge」 channel.
  • Do not use the convenience script if Docker has already been installed on the host machine using another mechanism.

1. 腳本須要用 root身份運行,你認真最好審計一下代碼,否則刪庫跑路都不知道了

2. 腳本會嘗試探測你係統的版本,並改變相關的配置,此外無法加上自定義的安裝參數,可能會致使配置支持性不好,甚至語言變成日語,讓你看不懂。。。。

3. 腳本會無腦的把全部推薦和依賴全安裝了,不通過你的確認,致使有大量的包,取決於你的系統配置

4. 腳本不給你選擇具體哪一個版本,直接給你轉最新的

5. 若是你已經安過docker了,你用腳本的話又安裝一次的話,恭喜你,涼了,趕忙收拾一下那個啥吧

 

FBI Warning:

腳本運行以前檢查一下代碼,由於服務器上的腳本頗有多是給黑客替換的

 

看到這裏仍然堅持要來一下的話,那就來吧

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

<output truncated>

 

 若是想要用非root用戶,須要執行下面的命令

  sudo usermod -aG docker your-user

記得先退出,從新登錄纔會生效

 

- 卸載 Docker

到這裏你的 docker 應該經過前面三種方式中的一種安裝好了,你須要手動啓動一下,使用 systemctl 或者 service 命令

有言在先,默認狀況下非root是運行不了docker命令的,下面是卸載的方法

1. 中止docker

$ sudo systemctl stop docker

2. 卸載包

$ sudo yum remove docker-ce

3. 刪除資源(容器 鏡像 網絡 卷映射)

$ sudo rm -rf /var/lib/docker
相關文章
相關標籤/搜索