1. 程式人生 > 其它 >『現學現忘』Docker基礎 — 11、Docker安裝的問題補充

『現學現忘』Docker基礎 — 11、Docker安裝的問題補充

目錄

通過yum安裝Docker的時候,安裝20版本的Docker沒有出現問題,在安裝17版本的時候,出現了問題。

問題復現,下面記錄一下這個問題。

1、問題復現

(1)安裝17.03版本Docker

執行
[root@localhost ~]# yum install docker-ce-17.03.0.ce
已載入外掛:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 docker-ce.x86_64.0.17.03.0.ce-1.el7.centos 將被 安裝
--> 正在處理依賴關係 docker-ce-selinux >= 17.03.0.ce-1.el7.centos,它被軟體包 docker-ce-17.03.0.ce-1.el7.centos.x86_64 需要
軟體包 docker-ce-selinux 已經被 docker-ce 取代,但是取代的軟體包並未滿足需求
--> 解決依賴關係完成
錯誤:軟體包:docker-ce-17.03.0.ce-1.el7.centos.x86_64 (docker-ce-stable)
          需要:docker-ce-selinux >= 17.03.0.ce-1.el7.centos
          可用: docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch (docker-ce-stable)
              docker-ce-selinux = 17.03.0.ce-1.el7.centos
          可用: docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch (docker-ce-stable)
              docker-ce-selinux = 17.03.1.ce-1.el7.centos
          可用: docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch (docker-ce-stable)
              docker-ce-selinux = 17.03.2.ce-1.el7.centos
          可用: docker-ce-selinux-17.03.3.ce-1.el7.noarch (docker-ce-stable)
              docker-ce-selinux = 17.03.3.ce-1.el7
 您可以嘗試新增 --skip-broken 選項來解決該問題
 您可以嘗試執行:rpm -Va --nofiles --nodigest

看到上邊提示,需要一個依賴包。這個依賴包就是docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm。其實只有docker-ce17.03的前幾個版本需要上邊的依賴包,其他版本不需要。

(2)安裝依賴包docker-ce-selinux

執行語句:

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm

提示如下:

已載入外掛:fastestmirror
docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm                                                         |  28 kB  00:00:00
正在檢查 /var/tmp/yum-root-81R4tG/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm: docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch
/var/tmp/yum-root-81R4tG/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm 將被安裝
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 docker-ce-selinux.noarch.0.17.03.0.ce-1.el7.centos 將被 安裝
--> 處理 docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch 與 docker-selinux 的衝突
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
--> 解決依賴關係完成
錯誤:docker-ce-selinux conflicts with 2:container-selinux-2.107-3.el7.noarch
 您可以嘗試新增 --skip-broken 選項來解決該問題
 您可以嘗試執行:rpm -Va --nofiles --nodigest

可以看到上邊顯示錯誤:docker-ce-selinux conflicts with 2:container-selinux-2.107-3.el7.noarch,說要安裝的docker-ce-selinux和主機上已經安裝的container-selinux-2.107-3.el7.noarch衝突了。

2、解決衝突

現在官網上給的解決解除安裝舊版本Docker命令如下:

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

命令中並沒有關於docker-ce-selinux的相關解除安裝。
新增過濾docker-selinuxdocker-engine-selinux的解除安裝就可以了。

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-engine 沒有匹配
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 container-selinux.noarch.2.2.107-3.el7 將被 刪除
--> 解決依賴關係完成

依賴關係解決

====================================================================================================================================
 Package                              架構                      版本                               源                          大小
====================================================================================================================================
正在刪除:
 container-selinux                    noarch                    2:2.107-3.el7                      @extras                     40 k

事務概要
====================================================================================================================================
移除  1 軟體包

安裝大小:40 k
是否繼續?[y/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在刪除    : 2:container-selinux-2.107-3.el7.noarch                                                                          1/1 
  驗證中      : 2:container-selinux-2.107-3.el7.noarch                                                                          1/1 

刪除:
  container-selinux.noarch 2:2.107-3.el7

完畢!

可以看到上邊已經刪除了有衝突的包container-selinux.noarch 2:2.107-3.el7.

3、重新安裝docker-ce-selinux

繼續安裝docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm

執行語句:

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm

安裝結果如下:

已安裝:
  docker-ce-selinux.noarch 0:17.03.0.ce-1.el7.centos

完畢!

4、安裝Docker-ce

解決完上邊的依賴問題,就可以繼續安裝Docker-ce。
執行[root@localhost ~]# yum install docker-ce-17.03.0.ce

已安裝:
  docker-ce.x86_64 0:17.03.0.ce-1.el7.centos

完畢!

到這裡問題就解決了。

5、總結

這個問題會出現的原因,應該是系統之前安裝過Docker,有依賴的包沒有解除安裝乾淨。如果是新裝的系統,應該不會出現上述問題。

以後在出現這樣的情況,可以直接按此解決。