低版本Docker升級(jí)高版本Docker的詳細(xì)教程及成功避坑
操作系統(tǒng) | 服務(wù) |
---|---|
Centos7 | Docker |
安裝低版本Docker
由于Centos7自帶的yum源中的Docker版本過(guò)低,先安裝默認(rèn)的版本
yum -y install docker
查看Docker版本
[root@Ayu ~]# docker --version Docker version 1.13.1, build 7d71120/1.13.1
宿主機(jī)創(chuàng)建掛載目錄
mkdir -p /test/nginx cd /test/nginx && mkdir a b c d
下載鏡像并創(chuàng)建容器
docker pull nginx docker run -itd -v /test/nginx:/test/nginx -p 80:80 --name nginx nginx
登錄容器查看映射
docker exec -it nginx bash root@daea0c2b307b:/# cd /test/nginx root@daea0c2b307b:/test/nginx# ls a b c d
訪問(wèn)測(cè)試
在升級(jí)前確定幾個(gè)重點(diǎn):
1.原配置文件備份一下
[root@localhost ~]# cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target Wants=docker-storage-setup.service Requires=docker-cleanup.timer [Service] Type=notify NotifyAccess=main EnvironmentFile=-/run/containers/registries.conf EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash Environment=DOCKER_HTTP_HOST_COMPAT=1 Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin ExecStart=/usr/bin/dockerd-current \ --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \ --default-runtime=docker-runc \ --exec-opt native.cgroupdriver=systemd \ --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ --init-path=/usr/libexec/docker/docker-init-current \ --seccomp-profile=/etc/docker/seccomp.json \ $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY \ $REGISTRIES ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 Restart=on-abnormal KillMode=process [Install] WantedBy=multi-user.target
2.清楚知道Docker的存儲(chǔ)目錄在哪里
默認(rèn)目錄:/var/lib/docker
進(jìn)行升級(jí)高版本docker
將低版本Docker卸載
不刪除 /var/lib/docker 目錄 就不會(huì)刪除已安裝的鏡像及容器
[root@localhost docker]# yum list installed | grep docker docker.x86_64 2:1.13.1-209.git7d71120.el7.centos @extras docker-client.x86_64 2:1.13.1-209.git7d71120.el7.centos @extras docker-common.x86_64 2:1.13.1-209.git7d71120.el7.centos @extras [root@localhost ~]# yum -y remove docker*
安裝yum管理工具
yum install -y yum-utils
添加國(guó)內(nèi)鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看軟件版本
yum list docker-ce --showduplicates|sort -r docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
安裝指定版本的docker
yum -y install docker-ce-18.03.1.ce-1.el7.centos [root@localhost ~]# systemctl start docker [root@localhost ~]# docker --version Docker version 18.03.1-ce, build 9ee9f40
查看容器和鏡像依然存在
啟動(dòng)容器測(cè)試:
報(bào)錯(cuò)①Error response from daemon: Unknown runtime specified docker-runc
這是因?yàn)榈桶姹旧?jí)到高版本之后不兼容 修改參數(shù)進(jìn)行解決
報(bào)錯(cuò)①解決方法:
更改/var/lib/docker/containers目錄中的文件參數(shù),把docker-runc替換為runc
命令:
grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'
注:grep -rl:遞歸搜索目錄和子目錄,只列出含有匹配的文本行的文件名,而不顯示具體的匹配內(nèi)容
xargs:銜接執(zhí)行之前得到的值總體意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出來(lái),并把‘docker-runc’字符為runc
重新啟動(dòng)docker
systemctl restart docker
報(bào)錯(cuò)②Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/09f8444f734ca18130ac4e2dafdcd3a19dd2986c9474bd0a50c87c0af559a831/merged: invalid argument
報(bào)錯(cuò)②解決方法:
解決方案無(wú)非是SELINUX要么都關(guān)閉,要么都開(kāi)啟
推薦修改CentOS下的/etc/selinux/config 將SELINUX=disabled 改成 SELINUX=permissive
vi /etc/selinux/config # 找到SELINUX=enable修改為SELINUX=permissive SELINUX=permissive # 保存 :wq
或者修改docker關(guān)閉selinux
vi /etc/sysconfig/docker # 找到OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false" # 刪除 --selinux-enabled OPTIONS="--log-driver=journald --signature-verification=false" # 保存 :wq
另外docker-18.03已經(jīng)廢棄使用overlay1了,overlay2存儲(chǔ)才是今后所支持的,因此不建議按照網(wǎng)上某文章的教程那樣將docker的存儲(chǔ)驅(qū)動(dòng)改回overlay1。改回overlay1的方式只是治標(biāo)不治本,正解是修改selinux配置。
啟動(dòng)容器進(jìn)行測(cè)試
至此低版本Docker升級(jí)高版本Docker完美結(jié)束~
總結(jié)
到此這篇關(guān)于低版本Docker升級(jí)高版本Docker的詳細(xì)教程及成功避坑的文章就介紹到這了,更多相關(guān)低版本Docker升級(jí)高版本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA連接遠(yuǎn)程服務(wù)器Docker部署Spring Boot項(xiàng)目的詳細(xì)教程
這篇文章主要介紹了IDEA連接遠(yuǎn)程服務(wù)器Docker部署Spring Boot項(xiàng)目,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06使用Docker部署openGauss國(guó)產(chǎn)數(shù)據(jù)庫(kù)的操作方法
openGauss是一款支持SQL2003標(biāo)準(zhǔn)語(yǔ)法,支持主備部署的高可用關(guān)系型數(shù)據(jù)庫(kù),這篇文章主要介紹了使用Docker部署openGauss國(guó)產(chǎn)數(shù)據(jù)庫(kù),需要的朋友可以參考下2022-10-10詳解基于Harbor搭建Docker私有鏡像倉(cāng)庫(kù)
這篇文章主要介紹了詳解基于Harbor搭建Docker私有鏡像倉(cāng)庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12給debian的docker容器添加crontab定時(shí)任務(wù)
這篇文章主要介紹了給debian的docker容器添加crontab定時(shí)任務(wù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Docker網(wǎng)絡(luò)之部署redis集群方式
文章介紹了如何部署和測(cè)試Redis集群,包括創(chuàng)建配置文件、啟動(dòng)容器、查看集群信息以及模擬節(jié)點(diǎn)故障進(jìn)行測(cè)試2025-01-015款超好用的開(kāi)源 Docker工具強(qiáng)烈推薦
這篇文章主要介紹了5款超好用的開(kāi)源 Docker工具強(qiáng)烈推薦,這5個(gè)工具非常實(shí)用,有需要同學(xué)可以學(xué)習(xí)下2021-03-03