002-Rocky9.3系统初始化设置和Docker安装

系统环境

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