1. 程式人生 > 其它 >『現學現忘』Docker基礎 — 10、Docker的安裝

『現學現忘』Docker基礎 — 10、Docker的安裝

目錄

CentOS環境下的Docker官方推薦的三種安裝方式

  • yum安裝方式
  • 指令碼安裝方式
  • 本地rpm安裝方式

1、前提

  • Docker要求CentOS系統的核心版本高於3.10。
    通過 uname -r
    命令檢視你當前的核心版本
    [root@localhost ~ ] # uname -r
    3.10.0-957.el7.x86_64
    
  • Docker目前分為兩個版本:
    Docker CE(社群免費版)
    Docker EE(企業版,強調安全,但需付費使用)
    注意:我們安裝的版本為社群版。
  • Docker 官方文件也可以檢視詳細的安裝方式:
    https://docs.docker.com/install/linux/docker-ce/centos/

2、通過yum安裝Docker

通過yum安裝Docker,也就是使用Docker映象倉庫進行安裝。

在新主機上首次安裝Docker Engine-Communitydocker-ce

) 之前,需要設定Docker倉庫。之後就可以從倉庫安裝和更新Docker。

(1)更新yum包

在新安裝的CentOS 7中,一定要先更新yum包。

$ sudo yum update

(2)移除舊的Docker版本

如果之前安裝過舊版本,在安裝前一定要執行一下下面的命令。

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

如果出現下面提示,則證明沒有安裝過之前的舊版本。

已載入外掛:fastestmirror
引數 docker 沒有匹配
引數 docker-client 沒有匹配
引數 docker-client-latest 沒有匹配
引數 docker-common 沒有匹配
引數 docker-latest 沒有匹配
引數 docker-latest-logrotate 沒有匹配
引數 docker-logrotate 沒有匹配
引數 docker-selinux 沒有匹配
引數 docker-engine-selinux 沒有匹配
引數 docker-engine 沒有匹配
不刪除任何軟體包

(3)安裝必須的軟體包

  • 安裝yum-utils提供yum-config-manager功能。
  • 同時安裝的device-mapper-persistent-datalvm2,用於devicemapper儲存裝置對映器,這是必須的兩個軟體包。(最新官方文件上沒有要求安裝這兩個軟體包)
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

(4)設定穩定yum源倉庫

yum配置一個穩定(stable)的倉庫(也可以是映象倉庫)來下載Docker。

官方Docker映象源地址(不推薦)

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

因為網路的原因經常下載失敗:
報錯:

1[Errno 14] curl#35 - TCP connection reset by peer(TCP連結被打斷)
2[Errno 12] curl#35 - Timeout(連結超時)

阿里的Docker映象源地址(推薦)

$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

注意

倉庫配置資訊會儲存到/etc/yum.repos.d/docker-ce.repo檔案中。
在沒有執行上邊命令之前,是沒有docker-ce.repo檔案的。執行完成上邊命令之後,才生成的docker-ce.repo檔案。

(5)更新yum軟體包索引

$ sudo yum makecache fast

這個命令是將軟體包資訊提前在本地快取一份,用來提高搜尋安裝軟體的速度。
通常在更新yum源或者重新配置yum源之後,使用該命令生成快取。(推薦執行一次該命令)

(6)開始安裝Docker-ce

1)安裝最新版本的Docker-ce

直接執行:$ sudo yum -y install docker-ce

2)安裝指定版本的Docker-ce

  • 列出資料庫中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
    
  • 選擇指定的版本安裝。
    執行:
    $ sudo yum install docker-ce-+版本號
    
    例如:
    $ sudo yum install docker-ce-18.03.1.ce
    

注意:

官方文件中安裝Docker需要安裝docker-cedocker-ce-clicontainerd.io三個軟體。我們直接安裝docker-ce就好,其他兩個軟體會自動匹配版本進行安裝。

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

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

(7)檢視Docker版本資訊

$ sudo docker version
Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:33:55 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

# 啟動Docker執行docker version命令,顯示資訊更多
Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:33:55 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:32:17 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

(8)啟動Docker

$ sudo systemctl start docker

(9)檢視Docker狀態

$ sudo systemctl status docker

(10)加入開機啟動

$ sudo systemctl enable docker

(11)驗證Docker是否正確安裝

通過執行hello-world映象來驗證是否正確安裝了Docker Engine-Community

$ sudo docker run hello-world

# 出現下面顯示,證明執行映象成功

Unable to find image 'hello-world:latest' locally(本地沒有找到hello-world映象)
latest: Pulling(拉取) from library/hello-world(去遠端拉取library/hello-world映象)
1b930d010525: Pull complete(拉取完成)
Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
Status: Downloaded newer image for hello-world:latest
(上面三行是拉取映象的簽名信息)

Hello from Docker!(映象執行起來了)
This message shows that your installation appears to be working correctly.
(此訊息表明您的安裝似乎可以正常工作。為了生成此訊息,Docker採取了以下步驟:)
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.
    (amd64)
 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 ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

(12)檢視本地Docker映象

$ sudo docker images
REPOSITORY    TAG       IMAGE ID       CREATED      SIZE
hello-world   latest    d1165f221234   8 days ago   13.3kB

(13)停止Docker執行

$ sudo systemctl stop docker

至此Docker安裝完成。