『現學現忘』Docker基礎 — 11、Docker安裝的問題補充
- 2022 年 3 月 10 日
- 筆記
- 高級測試技能 - 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-ce
的17.03
的前幾個版本需要上邊的依賴包,其他版本不需要。
(2)安裝依賴包docker-ce-selinux
執行語句:
yum install //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-selinux
和docker-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 //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,有依賴的包沒有卸載乾淨。如果是新裝的系統,應該不會出現上述問題。
以後在出現這樣的情況,可以直接按此解決。