在AlmaLinux 9上安装Docker Engine(Docker CE)
怎么回事?
我在AlmaLinux 9上是否可以安装Docker Engine(Docker CE)进行尝试。
在那之前
自红帽企业Linux 8起,已经移除了Docker。
在 RHEL 8.0 中未预装 Docker。要使用容器,需要安装 podman、buildah、skopeo 和 runc 工具。
我们决定使用Podman作为替代。
看看关于容器周围的文档,很明确地说:“不支持”。
在 Red Hat 的版本 RHEL 8 中,已经将 Docker 容器引擎和 docker 命令删除。
如果要在 RHEL 上使用 Docker,则可以从不同的上游项目获取 Docker,但不支持RHEL 8。
因此,从本质上来说,选择Podman是最合理的选择。
关于Podman,我觉得以后可能会谈论一下。
我觉得这次研究Red Hat企业级Linux以及其克隆版本的Docker情况是有意义的。
环境
这次的环境是这里。
$ cat /etc/redhat-release
AlmaLinux release 9.2 (Turquoise Kodkod)
$ cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.2 (Turquoise Kodkod)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.2 (Turquoise Kodkod)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
$ uname -srvmpio
Linux 5.14.0-284.11.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 9 05:49:00 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
查看Docker Engine的文档
首先,我会查看Docker Engine的文档。
Linux安装指南,适用于红帽企业版操作系统。
似乎只提供了针对IBM Z的软件包,不支持其他架构。可以说是“可能可以在CentOS上安装软件包”。
我们目前只为RHEL在s390x(IBM Z)架构提供软件包。其他架构尚不支持RHEL,但您可以尝试在RHEL上安装CentOS的软件包。有关详情,请查看在CentOS上安装Docker引擎页面。
版本号。
-
- RHEL 7 on s390x (IBM Z)
-
- RHEL 8 on s390x (IBM Z)
- RHEL 9 on s390x (IBM Z)
那么,让我们来看一下CentOS的内容吧。
这里提供的是兼容版本。
-
- CentOS 7
-
- CentOS 8 (stream)
- CentOS 9 (stream)
从CentOS 8开始,重点转向CentOS Stream。
如果情况变成这样,基本上可以认为Red Hat Enterprise Linux 8以后不再支持Docker Engine。
依然决定尝试安装
因为我已经看到这一步了,既然机会难得,就装上看看会发生什么。
按照适用于CentOS的步骤操作,将yum替换为dnf。
卸载旧版软件包。
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
添加存储库。
$ sudo dnf install yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker Engine(Docker CE)。
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动。
$ sudo systemctl start docker
查看状态。
$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; preset: disabled)
Active: active (running) since Mon 2023-07-03 01:15:49 JST; 1s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 30147 (dockerd)
Tasks: 9
Memory: 28.9M
CPU: 457ms
CGroup: /system.slice/docker.service
└─30147 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
让我们先确保在这里可以无需sudo即可执行docker命令。
将用户添加到Docker组中。
$ sudo usermod -aG docker $USER
登出当前的shell,然后再次启动shell。
启动nginx容器。
$ docker container run -it --rm -p 80:80 nginx:1.25.1
我站了起来。
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/07/02 16:16:34 [notice] 1#1: using the "epoll" event method
2023/07/02 16:16:34 [notice] 1#1: nginx/1.25.1
2023/07/02 16:16:34 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2023/07/02 16:16:34 [notice] 1#1: OS: Linux 5.14.0-284.11.1.el9_2.x86_64
2023/07/02 16:16:34 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1073741816:1073741816
2023/07/02 16:16:34 [notice] 1#1: start worker processes
2023/07/02 16:16:34 [notice] 1#1: start worker process 30
2023/07/02 16:16:34 [notice] 1#1: start worker process 31
我也能够访问。
$ curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
确认已安装的Docker Engine版本。
$ docker version
Client: Docker Engine - Community
Version: 24.0.2
API version: 1.43
Go version: go1.20.4
Git commit: cb74dfc
Built: Thu May 25 21:53:24 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.2
API version: 1.43 (minimum version 1.12)
Go version: go1.20.4
Git commit: 659604f
Built: Thu May 25 21:51:50 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
Docker Compose是一个选项。
$ docker compose version
Docker Compose version v2.18.1
多余的东西。
所以,我在AlmaLinux 9上尝试安装了Docker Engine(Docker CE)。
我看到了一些进展,但我意识到Red Hat Enterprise Linux 8及更高版本对Docker的支持可能会变得严峻,所以我们很可能会转而使用Podman…。