本文最后更新于 599 天前,其中的信息可能已经有所发展或是发生改变。
今天,我们将重点讨论如何在 Rocky Linux 上安装 Docker Community Edition(Docker CE)。考虑到大多数同学可能已经对 Docker 有所了解,不难理解 Docker CE 作为社区版的开源容器平台,它支持安装在各种主流操作系统上。鉴于 Rocky Linux 与 CentOS 共享相似的基因,预计在 Rocky Linux 上的安装过程将会相对简单。让我们一起探索并学习吧!
安装Docker CE
 特别说明
此安装步骤支持所有 Red Hat 系 Linux 操作系统,所以它适应包括: Red Hat、CentOS、Rocky Linux、Alma Linux、Oracle Linux 等操作系统。
# 添加Docker Repo
[root@localhost ~]# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
# 更新源
[root@localhost ~]# dnf update
# 在安装 Docker CE 的时候,会同步安装 docker-compose-plugin 插件
[root@localhost ~]# dnf install -y docker-ce
Last metadata expiration check: 0:00:42 ago on Fri Mar  8 10:24:42 2024.
Dependencies resolved.
================================================================================================================================================================================================================================================================
 Package                                                                   Architecture                                        Version                                                      Repository                                                     Size
================================================================================================================================================================================================================================================================
Installing:
 docker-ce                                                                 x86_64                                              3:25.0.4-1.el9                                               docker-ce-stable                                               26 M
Installing dependencies:
 checkpolicy                                                               x86_64                                              3.5-1.el9                                                    appstream                                                     345 k
 container-selinux                                                         noarch                                              3:2.221.0-1.el9                                              appstream                                                      55 k
 containerd.io                                                             x86_64                                              1.6.28-3.1.el9                                               docker-ce-stable                                               34 M
 docker-ce-cli                                                             x86_64                                              1:25.0.4-1.el9                                               docker-ce-stable                                              7.3 M
 fuse-common                                                               x86_64                                              3.10.2-6.el9                                                 baseos                                                        7.2 k
 fuse-overlayfs                                                            x86_64                                              1.12-1.el9                                                   appstream                                                      66 k
 fuse3                                                                     x86_64                                              3.10.2-6.el9                                                 appstream                                                      52 k
 fuse3-libs                                                                x86_64                                              3.10.2-6.el9                                                 appstream                                                      91 k
 libslirp                                                                  x86_64                                              4.4.0-7.el9                                                  appstream                                                      68 k
 policycoreutils-python-utils                                              noarch                                              3.5-3.el9_3                                                  appstream                                                      71 k
 python3-audit                                                             x86_64                                              3.0.7-104.el9                                                appstream                                                      82 k
 python3-distro                                                            noarch                                              1.5.0-7.el9                                                  appstream                                                      36 k
 python3-libsemanage                                                       x86_64                                              3.5-2.el9                                                    appstream                                                      79 k
 python3-policycoreutils                                                   noarch                                              3.5-3.el9_3                                                  appstream                                                     2.0 M
 python3-setools                                                           x86_64                                              4.4.3-1.el9                                                  baseos                                                        551 k
 python3-setuptools                                                        noarch                                              53.0.0-12.el9                                                baseos                                                        839 k
 slirp4netns                                                               x86_64                                              1.2.1-1.el9                                                  appstream                                                      46 k
 tar                                                                       x86_64                                              2:1.34-6.el9_1                                               baseos                                                        876 k
Installing weak dependencies:
 docker-buildx-plugin                                                      x86_64                                              0.13.0-1.el9                                                 docker-ce-stable                                               13 M
 docker-ce-rootless-extras                                                 x86_64                                              25.0.4-1.el9                                                 docker-ce-stable                                              4.0 M
 docker-compose-plugin                                                     x86_64                                              2.24.7-1.el9                                                 docker-ce-stable                                               13 M
Transaction Summary
================================================================================================================================================================================================================================================================
Install  22 Packages
# 建议添加普通用户至Docker组,并以普通用户运行Docker。
[root@localhost ~]# usermod -aG docker $USER
# 生效组用户变更配置
[root@localhost ~]# newgrp docker相关参数配置(daemon.json)
Docker 的相关参数都通过守护进程配置文件 (daemon.json) 进行配置,用于自定义 Docker 的行为。下面是每个参数的作用:  
- "registry-mirrors":配置 Docker 客户端使用的镜像仓库加速地址。用于指定一个或多个 Docker 镜像仓库加速地址,这些地址将作为 Docker Hub 的镜像加速使用。当你从 Docker Hub 拉取镜像时,如果配置了镜像加速地址,Docker 会首先尝试从这些镜像地址拉取所需的镜像。如果拉取成功,则不需要从 Docker Hub 拉取,这样可以加快镜像下载速度,特别是在 Docker Hub 访问速度较慢或不稳定的情况下。镜像仓库镜像通常由第三方提供,例如阿里云、腾讯云等云服务商在中国境内提供的 Docker 镜像加速服务(当然也可以自建镜像加速站)。
- "insecure-registries":指定 Docker 客户端可以连接的不安全仓库列表。用于指定一个或多个不使用 HTTPS 协议的私有仓库地址。默认情况下,Docker 要求镜像仓库使用 HTTPS 来保证通信的安全性。但是,如果你在内部网络中运行自己的私有仓库,并且没有配置 HTTPS,你可以使用- insecure-registries选项让 Docker 客户端信任这些仓库的 HTTP 连接。请注意,这样做会降低安全性,因此只建议在安全的内部网络环境中使用。
- "exec-opts":为 Docker 守护进程设置执行选项。- "native.cgroupdriver=systemd"表示 Docker 将使用- systemd作为其控制组驱动,而不是默认的- cgroupfs。这有助于更好地集成和管理系统资源。
- "log-driver":设置 Docker 容器的日志驱动。在这里,使用的是- "json-file",这意味着容器的日志将以 JSON 格式写入到文件中。
- "log-opts":为日志驱动配置选项。- "max-size": "100m"表示每个日志文件的最大大小为 100MB,- "max-file": "10"表示最多保留 10 个日志文件。
- "storage-driver":设置 Docker 的存储驱动。这里使用- "overlay2",这是 Docker 推荐的存储驱动之一,用于管理镜像和容器的文件系统层。
- "live-restore":当设置为- true时,允许 Docker 守护进程重新启动而不会停止正在运行的容器。
- "default-shm-size":设置容器内- /dev/shm的默认大小。这里设置为 128MB,而 Docker 默认值通常是 64MB。
- "bridge":配置 Docker 网络桥接选项。在这里,- "none"表示删除默认的- docker0网桥(Kubernetes 配置时有用,单 Docker 节点不需要设置)。
- "max-concurrent-downloads":设置 Docker 拉取镜像时的最大并发下载数量。这里设置为 10,而 Docker 默认通常是 3。
- "max-concurrent-uploads":设置 Docker 推送镜像到仓库时的最大并发上传数量。这里设置为 10,而 Docker 默认通常是 5。
- "debug":配置是否启用调试模式。这里设置为- false,表示关闭调试日志。
从修改 Docker 文件系统为 ovelay2 驱动,并配置 Docker 下载加速器地址,因为国内很多 Docker 加速器都需要进行认证,中国科学技术大学不需要进行认证,所以这里采用中国科学技术大学的 Docker 加速器。
[root@localhost ~]# cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn"],
  "insecure-registries":["docker.rockylinux.cn"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "100m",
     "max-file": "10"
  },
  "storage-driver": "overlay2",
  "live-restore": true,
  "default-shm-size": "128M",
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 10,
  "debug": false
}
EOF
# 重启Docker
[root@localhost ~]# systemctl daemon-reload
# 设置开机自启动,同时启动 docker 服务
[root@localhost ~]# systemctl enable docker --now
# 查看 docker 服务状态
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: active (running) since Fri 2024-03-08 11:06:10 CST; 40min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 8834 (dockerd)
      Tasks: 10
     Memory: 36.2M
        CPU: 1.546s
     CGroup: /system.slice/docker.service
             └─8834 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Mar 08 11:06:07 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:07.751363730+08:00" level=info msg="[graphdriver] trying configured driver: overlay2"
Mar 08 11:06:08 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:08.240829931+08:00" level=info msg="Loading containers: start."
Mar 08 11:06:09 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:09.824673008+08:00" level=info msg="failed to read ipv6 net.ipv6.conf.<bridge>.accept_ra" bridge=docker0 syspath=/proc/sys/net/ipv6/conf/docker0/accept_ra
Mar 08 11:06:09 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:09.824767439+08:00" level=info msg="failed to read ipv6 net.ipv6.conf.<bridge>.accept_ra" bridge=docker0 syspath=/proc/sys/net/ipv6/conf/docker0/accept_ra
Mar 08 11:06:10 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:10.081501802+08:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Mar 08 11:06:10 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:10.575610211+08:00" level=info msg="Loading containers: done."
Mar 08 11:06:10 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:10.644316257+08:00" level=info msg="Docker daemon" commit=061aa95 containerd-snapshotter=false storage-driver=overlay2 version=25.0.4
Mar 08 11:06:10 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:10.644638904+08:00" level=info msg="Daemon has completed initialization"
Mar 08 11:06:10 localhost.localdomain dockerd[8834]: time="2024-03-08T11:06:10.842536019+08:00" level=info msg="API listen on /run/docker.sock"
Mar 08 11:06:10 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
# 启动Docker服务
[root@localhost ~]# systemctl start docker
# 重启 Docker 服务
[root@localhost ~]# systemctl restart docker
# 停止 Docker 服务
[root@localhost ~]# systemctl stop docker查看 Docker 信息
# 查看 Docker 版本信息(docker --version 命令只显示版本信息)
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           25.0.4
 API version:       1.44
 Go version:        go1.21.8
 Git commit:        1a576c5
 Built:             Wed Mar  6 16:33:45 2024
 OS/Arch:           linux/amd64
 Context:           default
Server: Docker Engine - Community
 Engine:
  Version:          25.0.4
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.8
  Git commit:       061aa95
  Built:            Wed Mar  6 16:32:08 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
# 查看 Docker 相关配置信息
[root@localhost ~]# docker info
Client: Docker Engine - Community
 Version:    25.0.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.13.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.7
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 25.0.4
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.14.0-362.18.1.el9_3.0.1.x86_64
 Operating System: Rocky Linux 9.3 (Blue Onyx)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.494GiB
 Name: localhost.localdomain
 ID: caa108f4-0ff0-4e62-ac56-8abbb63b76a5
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
  https://mirror.iscas.ac.cn/
 Live Restore Enabled: true测试部署 Docker
# 拉取镜像
[root@localhost ~]# docker pull rockylinux:9.3.20231119-minimal
9.3.20231119-minimal: Pulling from library/rockylinux
c57e48f6b45c: Pull complete 
Digest: sha256:605cdab3253819ad302dd4ba43c89d1d6bea2a380057b6cd20f58393d7eee36c
Status: Downloaded newer image for rockylinux:9.3.20231119-minimal
docker.io/library/rockylinux:9.3.20231119-minimal
# 查看镜像
[root@localhost ~]# docker images
REPOSITORY   TAG                    IMAGE ID       CREATED        SIZE
rockylinux   9.3.20231119-minimal   2b791da92d4d   3 months ago   118MB
# 启动 Docker
[root@localhost ~]# docker run -it rockylinux:9.3.20231119-minimal /bin/bash
bash-5.1# ls -l
total 0
dr-xr-xr-x   2 root root   6 May 16  2022 afs
lrwxrwxrwx   1 root root   7 May 16  2022 bin -> usr/bin
drwxr-xr-x   5 root root 360 Mar 11 01:36 dev
drwxr-xr-x   1 root root  66 Mar 11 01:36 etc
drwxr-xr-x   2 root root   6 May 16  2022 home
......(略)Docker Compose 安装
以前需要单独下载 docker-compose 二进制文件,放于 /usr/local/bin 目录,并授于可执行权限,方可使用 docker-compose 命令。现在在安装 Docker CE 的时候,会同步安装 docker-compose-plugin 插件,安装以后可以直接使用 docker compose 命令,不需要单独安装。如果需要单独安装,可以使用以下命令进行安装。  
# 安装 docker compose
[root@localhost ~]# dnf install docker-compose-plugin -y
# 查看对应版本
[root@localhost ~]# docker compose version
Docker Compose version v2.24.7变更记录
- 2024-03-08
- 移除 Docker 弃用参数 oom-score-adjust、overlay2.override_kernel_check。
- 增加 Docker 守护进程各参数说明。
- 增加 Docker Compose 安装说明。
- 优化文章排版逻辑和结构。
- 操作系统版本更新至 Rocky Linux 9.3 。
 
- 移除 Docker 弃用参数 
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
	 
			 用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
			
	











建议公众号也同步一下这些文章,RockyLinux 公众号已经好久没有更新啦~
好的,我们尽快打通与微信公众号之前的文章同步功能。
docker.service: Failed with result ‘exit-code’.
修改配置文件后缀 —>把/etc/docker/daemon.json文件的.json后缀,修改为.conf后缀
Good @-@
不知道会不会有人看见,这个脚本是我个人编写的一个,很简单很简单的bash脚本。因为文章中的docker CE安装过程,现在的国内环境如果不会在linux中代理翻墙的话就没有办法连接安装,因此我就使用了阿里云的docker镜像,虽然和最新的docker有一定的版本差距,但是不影响使用,加速镜像的网址是目前我个人确定能够连接的上的,具体的内容,请看下面的代码。