在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…。

广告
将在 10 秒后关闭
bannerAds