1. 运行环境描述

操作系统版本:Rocky Linux 9.2

系统内核版本:5.14.0

Docker 版本:24.0.7

Docker Compose 版本:2.23.0

2. 基础环境配置

2.1 禁用系统交换分区

2.1.1 禁用 swap 交换分区

使用 swapoff -a 命令关闭swap分区。

2.1.2 永久禁用 swap 交换分区

使用以下命令禁用系统启动自动挂载 swap 交换分区。

sed -ri 's/.*swap.*/#&/' /etc/fstab

2.1.3 检查配置

通过 free -m 命令查看当前系统情况,交换分区大小为“0”。

查看系统配置 cat /etc/fstab , 交换分区挂载分区已被注释。

2.2 更换国内YUM源

这里使用阿里提供的源,Rocky Linux 镜像链接

2.2.1 修改配置
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
    -i.bak \
    /etc/yum.repos.d/[Rr]ocky-*.repo
2.2.2 生成缓存

通过 dnf makecache 生成缓存

2.3 禁用 SELinux

2.3.1 修改配置
# 立即关闭
[root@localhost ~]# setenforce 0
# 永久关闭
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.3.2 配置修改确认

cat /etc/selinux/config

2.4 防火墙配置

2.4.1 设置防火墙开机启动

通过以下命令设置防火墙默认开机启动并开启。

systemctl enable firewalld && systemctl start firewalld

2.4.2 查看防火墙状态

命令:systemctl status firewalld

防火墙当前为active(running)状态,表示当前防火墙正常启动且运行。

2.5 配置时间同步

系统默认已安装了 chrony ,这里使用它来进行时间同步。

2.5.1 查看当前系统时区

通过命令 timedatectl status ,查看当前系统时区是否被正确

如果输出不是“Asia/Shanghai”,则需要通过如下命令进行修改,修改后请再次确认。

设置时区命令:timedatactl set-timezone Asia/Shanghai

2.5.2 修改配置文件
# 修改配置文件 
vi /etc/chrony.conf

# 注释原来地址池,增加以下行
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst

# 保存配置

2.5.3 设置时间服务开机启动

systemctl enable chronyd

2.5.4 重启时间服务

systemctl restart chronyd

2.5.5 查看服务状态

systemctl status chronyd

2.5.6 查看时间同步状态

chronyc sources

检查chrony来源,列出有关chronyd使用的当前时间源的信息

默认情况下,NTP 客户端每64秒执行一次时间同步。但是,您可以手动调整时钟而无需等待下一次同步轮询。

[root@localhost ~]# chronyc makestep
200 OK

2.6 常用软件安装

dnf install -y vim zip unzip tree net-tools lrzsz rsync wget telnet

2.7 系统补丁更新

如果要保持当前系统更新,请使用 dnf update 命令更新当前系统到最新。

3. Docker 安装配置

3.1 设置 Docker-CE YUM 源

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

3.2 安装 Docker

# 先更新下YUM源 
dnf update

# 安装docker
dnf install -y docker-ce

3.3 启动 Docker 服务

sudo systemctl start docker && sudo systemctl status docker

3.4 设置开机自启动

sudo systemctl enable docker

3.5 创建Docker服务运行普通用户

sudo usermod -aG docker $USER

3.6 生效组用户变更配置

newgrp docker

3.7 查看 Docker 信息

docker info

[root@localhost ~]# docker info
Client: Docker Engine - Community
 Version:    24.0.7
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.21.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.7
 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 logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
 runc version: v1.1.9-0-gccaecfc
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.14.0-284.11.1.el9_2.x86_64
 Operating System: Rocky Linux 9.2 (Blue Onyx)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 15.37GiB
 Name: localhost.localdomain
 ID: 0812dfa9-90a1-4fc0-8738-57f2166c8aa5
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

可以正常输出Docker服务版本信息等,表示Docker服务运行正常。

4. Compose 安装配置

4.1 下载 docker-compose

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

可以通过 GitHub release 查看所需要的具体版本进行下载。

日期:2023年11月13日,截止本文档编辑时间最新的版本是v2.23.0。

4.2 执行程序权限修改

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

4.3 创建软链接

[root@localhost ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4.4 运行测试验证

[root@localhost ~]# docker-compose -v
Docker Compose version v2.23.0

至此,docker及docker-compose环境配置结束。

通过以上步骤即可完成在 Rocky Linux 9.2 操作系统上完成 docker及 docker-compose 环境的配置,之后即可进行镜像的下载以及服务的部署了。

5. 运行环境参数优化

5.1 docker 参数优化

配置文件:/etc/docker/daemon.json

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "insecure-registries":["dockerhub.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

参数解析:

1. registry-mirrors

- 作用: 指定Docker镜像仓库的镜像地址。

- 说明: 在拉取Docker镜像时,守护进程会按顺序尝试这些镜像地址,以提高镜像检索速度。

2. insecure-registries

- 作用: 定义一组不安全的Docker镜像仓库。

- 说明: Docker将不使用HTTPS的镜像仓库视为不安全。此选项允许与指定的镜像仓库进行通信,而不强制使用加密。

3. exec-opts

- 作用: 为容器执行设置选项。

- 说明: 在这种情况下,将本地的cgroup驱动程序设置为systemd。cgroups(控制组)用于限制、记录和隔离进程组的资源使用(CPU、内存、磁盘I/O等)。

4. log-driver

- 作用: 为容器设置日志记录驱动程序。

- 说明: 指定用于容器日志的记录驱动程序。在这里,设置为“json-file”,表示日志将被写入JSON格式的文件。

5. log-opts

- 作用: 为所选的日志记录驱动程序设置选项。

- 说明: 配置特定于JSON文件日志驱动程序的选项,如日志文件的最大大小("max-size")和保留的日志文件的最大数量("max-file")。

6. storage-driver

- 作用: 设置用于管理镜像和容器存储的存储驱动程序。

- 说明: 在这里,它设置为“overlay2”,这是一种现代的存储驱动程序,支持分层文件系统,是大多数安装的推荐选择。

7. live-restore

- 作用: 启用或禁用容器的实时恢复功能。

- 说明: 当设置为true时,允许Docker守护进程在重新启动后从先前的状态恢复容器。

8. default-shm-size

- 作用: 设置/dev/shm的默认大小,这是容器用于通信的共享内存。

- 说明: 容器使用共享内存进行进程间通信。此选项设置每个容器的共享内存的默认大小。

9. max-concurrent-downloadsmax-concurrent-uploads

- 作用: 限制Docker镜像的并发下载和上传数量。

- 说明: 有助于控制资源使用,并防止过多的并行下载和上传。

10. oom-score-adjust:

- 作用: 调整Docker守护进程进程的OOM(内存不足)分数。

- 说明: 此参数影响在系统内存不足条件发生时Linux OOM killer选择Docker守护进程的可能性。

11. debug:

- 作用: 启用或禁用调试模式。

- 说明: 当设置为true时,启用Docker守护进程的调试日志,提供更详细的信息以进行故障排除。

6. 常见错误处理

参考文献

Rocky Linux 9 配置时间同步服务 chrony

在 Rocky Linux 9.1 上安装 Docker CE