系统环境
RockyLinux:9.3
镜像下载官网:https://rockylinux.org/zh-CN/download
镜像下载地址:https://dl.rockylinux.org/vault/rocky/9.3/isos/x86_64/
安装镜像文件:Rocky-9.3-x86_64-minimal.iso
1、环境初始化
1.1 配置静态IP
查看当前要设置的网卡
ip addr
编辑网卡配置
vi /etc/NetworkManager/system-connections/ens34.nmconnection
添加如下配置
[ipv4] method=manual address1=192.168.6.221/24,192.168.6.1 dns=114.114.114.114;8.8.8.8
配置解析
[ipv4] ip设置为手动配置 method=manual 设置IP为:192.168.6.222 /24 表示子网掩码为:255.255.255.0 ,192.168.6.1 表示网关地址为:192.168.6.1 address1=192.168.6.222/24,192.168.6.1 dns地址 dns=114.114.114.114;8.8.8.8
1.2 重启设备和连接配置
重新应用网络设备 ens34 的当前配置 nmcli device reapply ens34 重新加载 ens34 的网络连接配置。在网络配置文件被手动更改后,通过此命令重新加载连接设置,使更改生效。 nmcli connection reload ens34 使用 nmcli 命令激活网络设备 nmcli device connect ens34 查看IP配置是否成功 ip addr ping www.baidu.com
其它命令
断开网络设备 ens34 的网络连接。 nmcli device disconnect ens34 激活连接(Connection)如果设备已连接,但未启用对应的网络连接配置,可以激活配置: nmcli connection up ens34 检查设备状态 nmcli device status 如果希望设备在每次系统启动时自动启用,可以执行以下命令: nmcli connection modify ens34 connection.autoconnect yes
1.3 更换系统软件源
更新源
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
刷新dnf缓存
dnf makecache
验证源更新
dnf repolist
命令解析
使用 sed 命令修改 Rocky Linux 的 YUM/DNF 源配置文件,切换到阿里云的镜像源。 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 将以 mirrorlist= 开头的行注释掉(在前面加 #) -e 's|^mirrorlist=|#mirrorlist=|g' 将以 #baseurl= 开头并指向默认 Rocky Linux 源的行取消注释,并替换为阿里云镜像源 URL。 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak:直接修改文件,并为原文件创建备份(扩展名为 .bak)。 修改 /etc/yum.repos.d/ 目录下所有以 rocky 或 Rocky 开头的 .repo 文件。 修改完成后,原始文件会被备份为 .bak 文件。 -i.bak /etc/yum.repos.d/[Rr]ocky*.repo 更新本地缓存,确保系统可以快速查询软件包信息。 dnf makecache
1.4 修改防火墙
防火墙修改 firewalld 为 iptables
systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-services
systemctl start iptables
iptables -F
systemctl enable iptables
service iptables save
命令解析
停止运行 firewalld systemctl stop firewalld 禁止 firewalld 开机自启 systemctl disable firewalld 安装 iptables 服务,用于管理 Linux 的防火墙规则 yum -y install iptables-services 使防火墙规则立即生效,并开始运行 iptables 防火墙服务。 systemctl start iptables 删除当前的防火墙规则,通常用于重置或清理防火墙规则。 iptables -F 设置 iptables 服务开机自启动,确保服务器重启后,iptables 服务会自动加载防火墙规则。 systemctl enable iptables 将当前 iptables 的规则配置保存到文件中(通常是 /etc/sysconfig/iptables),以便在系统重启或 iptables 服务重新启动后,能够自动加载保存的规则。 service iptables save
1.5 禁用 Selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
grubby --update-kernel ALL --args selinux=0
命令解析
将 SELinux 的模式设置为 Permissive(宽容模式)。 0:表示设置为 Permissive 模式,此模式下 SELinux 不会强制执行安全策略,而是记录违规日志。 1:表示 Enforcing 模式,此模式下 SELinux 会强制执行安全策略。 setenforce 0 修改 SELinux 配置文件 /etc/selinux/config,将 SELINUX 设置为 disabled。永久禁用 SELinux,即使系统重启也不会再启用。 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 通过 grubby 工具将 selinux=0 参数添加到所有内核启动配置中。 grubby --update-kernel ALL --args selinux=0 grubby --info DEFAULT 查看是否禁用, grubby --info DEFAULT 回滚内核层禁用操作,、 grubby --update-kernel ALL --remove-args selinux
修改完成后重启系统
reboot
1.6 设置时区
timedatectl set-timezone Asia/Shanghai
2、安装Docker
2.1 安装必要的库和网络设置
yum install -y epel-release
yum install -y bridge-utils
modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
sysctl -p
命令解释
安装 EPEL(Extra Packages for Enterprise Linux) 仓库的 Release 包。 EPEL 是由 Fedora 社区维护的一个软件仓库,提供许多额外的软件包,这些包在默认的 RHEL(或其衍生版如 CentOS、Rocky Linux 等)中没有包含。 yum install -y epel-release 安装 bridge-utils 软件包。 bridge-utils 是一个 Linux 工具集,用于创建和管理网络桥接(bridging)。 yum install -y bridge-utils 加载 br_netfilter 内核模块。 该模块用于启用网络桥接(bridge)时的流量过滤功能。 允许通过桥接的网络流量被 iptables 规则管理。 在容器或虚拟化环境中,确保桥接网络的流量可以被正确处理。 modprobe br_netfilter 将 br_netfilter 模块名称添加到 /etc/modules-load.d/bridge.conf 文件中。 配置系统在启动时自动加载 br_netfilter 模块。 echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf 向 /etc/sysctl.conf 文件添加配置,使桥接流量可以通过 iptables 规则管理。 启用桥接网络上的 IPv4 流量通过 iptables 的规则处理。 net.bridge.bridge-nf-call-iptables=1 向 /etc/sysctl.conf 文件添加配置,使桥接流量中的 IPv6 流量可以通过 ip6tables 规则管理。 net.bridge.bridge-nf-call-ip6tables=1 向 /etc/sysctl.conf 文件添加配置,启用 IP 转发功能。 用途:在容器网络或 Kubernetes 集群中,允许跨子网通信。 net.ipv4.ip_forward=1 启用 TCP SYN Cookie 技术,用于防范 SYN Flood 攻击。 在服务器收到大量的 TCP SYN 请求但无法分配足够资源时,启用 SYN Cookie 可通过一种临时编码方式验证连接合法性,避免资源耗尽。 net.ipv4.tcp_syncookies = 1 设置系统同时保持的 TCP TIME_WAIT 状态的连接数上限。达到上限后,系统会直接丢弃多余的连接(而不是继续占用资源)。 默认值180000,对于高并发的 Web 服务器或反向代理,适当调低该值(如 20480)以避免 TIME_WAIT 数量过多。 net.ipv4.tcp_max_tw_buckets = 20480 设置 TCP 三次握手中 SYN 请求的队列长度上限。 当服务器接收的 SYN 请求超过该值时,新的连接请求会被丢弃。 如果服务器负载较高且连接数较多,可以调高到 20480 或更高。 net.ipv4.tcp_max_syn_backlog = 20480 设置网络设备接收队列的最大长度。 如果接收队列中的数据包数量超过该值,内核将直接丢弃后续数据包。 在高流量环境中,设置为较高值(如 262144)以避免丢包,提高吞吐量。 net.core.netdev_max_backlog = 262144 设置 TCP 连接处于 FIN_WAIT2 状态的超时时间(单位:秒)。 FIN_WAIT2 状态表示服务端已发送 FIN 包等待客户端确认,此状态会持续占用资源。 默认值:通常为 60 秒。 在高并发服务器上,将该值调低(如 20)以减少 FIN_WAIT2 状态的资源占用。 net.ipv4.tcp_fin_timeout = 20 重新加载 /etc/sysctl.conf 中的所有内核参数配置,并使其立即生效。 sysctl -p
2.2 安装docker
添加 docker-ce yum 源
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
命令解析
使用 dnf config-manager 命令添加 Docker 软件包的官方仓库(在这里是阿里云的镜像)。 sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 修改 docker-ce.repo 文件中的镜像源地址,将默认的 download.docker.com 替换为阿里云的镜像地址 mirrors.aliyun.com/docker-ce。 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo 安装最新版本docker sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.3 开启Docker服务
systemctl start docker
systemctl enable docker
2.4 配置 daemon.json
cat >>/etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
},
"data-root":"/data/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://kfp63jaj.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
配置解析
"data-root": "/data/docker" 指定 Docker 数据的存储目录为 /data/docker。 包括容器、镜像、卷等内容。 默认存储在 /var/lib/docker,此配置用于更改默认路径。 "exec-opts": ["native.cgroupdriver=systemd"] 配置 Docker 使用 systemd 作为 Cgroup 驱动程序。 推荐在使用现代 Linux 发行版(如 Rocky Linux 9)或 Kubernetes 时采用此配置,以实现更好的资源管理和兼容性。 "log-driver": "json-file" 指定 Docker 的日志驱动为 json-file。 json-file 是 Docker 默认的日志存储方式,将日志保存在 JSON 文件中。 "log-opts": {} 配置日志驱动的选项: "max-size": "100m":每个日志文件的最大大小为 100MB。 "max-file": "100":最多保留 100 个日志文件(滚动日志机制)。 "insecure-registries": ["harbor.xinxainghf.com"] 配置不安全的私有镜像仓库地址(即未启用 HTTPS 的仓库)。 例如,harbor.xinxainghf.com 是一个私有仓库地址。 "registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"] 配置 Docker 镜像加速器。 镜像地址为阿里云镜像服务,加速从官方 Docker Hub 拉取镜像的速度。
2.5 创建 Docker 服务的自定义配置目录
mkdir -p /etc/systemd/system/docker.service.d
用于存放 Docker 服务的自定义配置文件。
2.6 重新加载 Docker 配置
systemctl daemon-reload
systemctl restart docker
验证配置是否生效
docker info
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 george_95@126.com