Docker安装、升级、异常处理、卸载详解

Docker安装、升级、异常处理、卸载详解

Docker引擎

要使用Docker必须安装Docker Engine(Docker引擎),Docker 引擎是用来运行和管理容器的核心软件,其由四部分主要组件构成:Docker Client,Dockerd、Containerd 与 Runc。

Docker引擎分类

Docker 引擎分为三类:Moby、社区版 Docker-CE(Community Edition)和企
业版 Docker-EE(Enterprise Edition)。

Docker引擎安装

Docker可以安装在各种Linux 发行版、 macOS和Windows 10上,因为生产环境多用Linux作为服务器,所以下面就以 Docker-CE在 CentOS 8 中的安装为例来学习 Docker 的安装。

官网对CentOS版本还是有要求的,安装的时候要注意版本

image

下面我们开始安装

1、卸载老版本docker(如果是新机器可以忽略此步骤)

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

image

2、安装yum-utils包

yum-utils 中提供了 yum-config-manager 工具,该工具是下面要使用的命令,用于完成配置管理。

sudo yum install -y yum-utils

image

3、添加docker下载仓库

3.1、国外仓库

如果您可以顺利访问国外网站,则可以添加此仓库

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

3.2、国内仓库

针对访问不了国外完整的朋友,则可以添加阿里云仓库

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

如果刚开始安装的是国外仓库,想更换,更换方式如下:

# 进入/etc/yum.repos.d/
[root@qzxdp_centos01 ~]# cd /etc/yum.repos.d/
[root@qzxdp_centos01 yum.repos.d]# ls
CentOS-Stream-AppStream.repo  CentOS-Stream-Extras-common.repo     CentOS-Stream-Media.repo       CentOS-Stream-RealTime.repo          docker-ce.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-Extras.repo            CentOS-Stream-NFV.repo         CentOS-Stream-ResilientStorage.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-HighAvailability.repo  CentOS-Stream-PowerTools.repo  CentOS-Stream-Sources.repo

# 删除原有库
[root@qzxdp_centos01 yum.repos.d]# rm -fr docker-ce.repo
[root@qzxdp_centos01 yum.repos.d]#
[root@qzxdp_centos01 yum.repos.d]#

# 添加阿里云库
[root@qzxdp_centos01 yum.repos.d]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加仓库自:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@qzxdp_centos01 yum.repos.d]#
[root@qzxdp_centos01 yum.repos.d]# ls
CentOS-Stream-AppStream.repo  CentOS-Stream-Extras-common.repo     CentOS-Stream-Media.repo       CentOS-Stream-RealTime.repo          docker-ce.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-Extras.repo            CentOS-Stream-NFV.repo         CentOS-Stream-ResilientStorage.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-HighAvailability.repo  CentOS-Stream-PowerTools.repo  CentOS-Stream-Sources.repo
[root@qzxdp_centos01 yum.repos.d]#

我这里就以添加阿里云仓库为例

image

4、安装docker

安装docker分两种方式

方式一:安装最新版本的

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

方式二:安装特定版本的

官网也给出了步骤,先查询出有那些可用版本,然后按照特定版本安装即可。

image

我这里就以安装特定版本为例,因为后面我需要演示怎么升级。

查询可安装版本

注意:官网只给出了查询docker-ce可用版本的命令,docker-ce-cli版本是不匹配的,所以需要重新查询下

# 查询 docker-ce 可用版本
yum list docker-ce --showduplicates | sort -r

# 查询 docker-ce-cli 可用版本
yum list docker-ce-cli --showduplicates | sort -r

image

image

sudo yum install docker-ce-3:23.0.4-1.el8 docker-ce-cli-1:23.0.4-1.el8 containerd.io docker-buildx-plugin docker-compose-plugin

image

image

5、启动并验证docker

# 启动docker
[root@qzxdp_centos01 ~]# sudo systemctl start docker


# 查看 版本号 说明安装成功
[root@qzxdp_centos01 ~]# docker version
Client: Docker Engine - Community
 Version:           23.0.4
 API version:       1.42
 Go version:        go1.19.8
 Git commit:        f480fb1
 Built:             Fri Apr 14 10:34:20 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.4
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.8
  Git commit:       cbce331
  Built:            Fri Apr 14 10:32:03 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

# 运行hello world
[root@qzxdp_centos01 ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

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/

[root@qzxdp_centos01 ~]#

报错一

docker: Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

是因为这个拉取镜像找到的是国外地址,需要配置国内镜像加速,解决办法见6,配置阿里云加速

报错二

Error response from daemon: Get “https://index.docker.io/v1/search?q=hello-world&n=25”: dial tcp: lookup index.docker.io on 10.211.55.1:53: read udp 10.211.55.17:53899->10.211.55.1:53: i/o timeout

解决办法就是修改宿主机

# 修改

vi /etc/resolv.conf

# 添加如下

nameserver 8.8.8.8

nameserver 8.8.4.4 #两个IP地址是谷歌公开的DNS

6、配置阿里云镜像加速

6.1、登录阿里云并进入控制台

image

6.2、选择容器镜像服务进入

image

6.3、选择镜像加速

image

6.4、根据不同的OS选择不同的配置方式

按照操作步骤操作即可

image

7、Docker重启、状态查看、配置开机自启动

# 重启
[root@qzxdp_centos01 ~]# systemctl restart docker
[root@qzxdp_centos01 ~]#

# 查看状态
[root@qzxdp_centos01 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-05-07 13:36:31 CST; 5s ago
     Docs: https://docs.docker.com
 Main PID: 2302 (dockerd)
    Tasks: 8
   Memory: 28.0M
   CGroup: /system.slice/docker.service
           └─2302 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

5月 07 13:36:30 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:30.542389418+08:00" level=info msg="Firewalld: interface docker0 already part of>
5月 07 13:36:30 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:30.577965956+08:00" level=info msg="Firewalld: interface docker0 already part of>
5月 07 13:36:30 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:30.857809777+08:00" level=info msg="Default bridge (docker0) is assigned with an>
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.096229409+08:00" level=info msg="Firewalld: interface docker0 already part of>
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.237477463+08:00" level=info msg="Loading containers: done."
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.256721761+08:00" level=info msg="Docker daemon" commit=cbce331 graphdriver=ov>
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.256825206+08:00" level=info msg="Daemon has completed initialization"
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.278444266+08:00" level=info msg="[core] [Server #7] Server created" module=gr>
5月 07 13:36:31 qzxdp_centos01 dockerd[2302]: time="2023-05-07T13:36:31.282862276+08:00" level=info msg="API listen on /run/docker.sock"
5月 07 13:36:31 qzxdp_centos01 systemd[1]: Started Docker Application Container Engine.
lines 1-20/20 (END)

# 配置开机自启动
[root@qzxdp_centos01 ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@qzxdp_centos01 ~]#

8、升级docker

8.1、下载rpm

访问 https://download.docker.com/linux/centos 选择自己CentOS版本,然后浏览x86_64/stable/Packages/ 并下载.rpm您要安装的 Docker 版本的文件。

因为我本地是CentOS8所以选择目录为

image

下载最新版本 docker-ce-23.0.5-1.el8.x86_64.rpm、docker-ce-cli-23.0.5-1.el8.x86_64.rpm

8.2、安装

image

8.3、启动docker 查看版本

image

image

9、Docker卸载

9.1、卸载 Docker Engine、CLI、containerd 和 Docker Compose 包

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

image

9.2、手动删除主机上的镜像、容器、容器卷以及自定义配置文件

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    qzxdp.cn

    暂无评论内容