本文总结如何在CentOS
中安装Docker Engine
Docker Engine
是一种开源容器化技术,用于构建和容器化应用程序。Docker引擎作为一个客户端-服务器应用程序:
CLI使用Docker api通过脚本或直接的CLI命令来控制Docker守护进程或与之交互。许多其他Docker应用程序使用底层API和CLI。守护进程创建和管理Docker对象,如镜像、容器、网络和卷。
要求CentOS版本
为: CentOS 7
/CentOS 8
/CentOS 8 Stream
/CentOS 9 Stream
要求centos-extras
仓库配置开启(默认是开启的)
如果你的yum源有问题请参考:
CentOS 执行yum命令报错【错误:为仓库 ‘appstream‘ 下载元数据失败: …】
如下是CentOS8
中的CentOS-Linux-Extras.repo
,要求enabled=1
[root@GC yum.repos.d]# cat /etc/yum.repos.d/CentOS-Linux-Extras.repo
# CentOS-Linux-Extras.repo
# ...
[extras]
name=CentOS Linux $releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=https://mirrors.aliyun.com/centos-vault/8.4.2105/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
卸载旧版本的docker
or docker-engine
,如果你使用的是新安装的CentOS
,可以忽略该步骤
执行如下命令,进行卸载
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
示例(root用户无需加sudo):
[root@GC ~]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
Failed to set locale, defaulting to C.UTF-8
No match for argument: docker
No match for argument: docker-client
No match for argument: docker-client-latest
No match for argument: docker-common
No match for argument: docker-latest
No match for argument: docker-latest-logrotate
No match for argument: docker-logrotate
No match for argument: docker-engine
No packages marked for removal.
Dependencies resolved.
Nothing to do.
Complete!
[root@GC ~]
因为我是新安装的,所以:No packages marked for removal
安装Docker Engine
的方式有多种,本文使用Docker
仓库安装
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装yum-utils
包,然后使用该包下的yum-config-manager
命令配置Docker仓库
安装最新版本的Docker Engine
、containerd
、 Docker Compose
等
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
如果你使用systemctl
命令报错,请参考:
使用systemctl
命令报错:System has not been booted with systemd as init system (PID 1). Can‘t operate.
sudo docker run hello-world
如下,可正常运行hello-world
表示安装成功了。
[root@GC ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:dcba6daec718f547568c562956fa47e1b03673dd010fe6ee58ca806767031d1c
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@GC ~]#
如果你需要卸载Docker,可以参考如下命令:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
上述命令,不会删除images
、containers
、volumes
等数据,
你可以再执行如下命令进行删除:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
参考资料:
Install Docker Engine on CentOS