1. CentOS8最小化安装实战

刚拿到一台新服务器时,很多朋友会习惯性地选择图形界面安装,这其实是个误区。我在管理企业服务器集群时发现,最小化安装才是王道。就拿CentOS8.5.2111来说,最小化安装后系统占用资源不到1GB,而带GUI的安装轻松突破4GB。更重要的是,命令行环境稳定性远超图形界面——去年我们有个项目用GUI服务器跑了三个月就出现Xorg内存泄漏,换成最小化安装后连续运行一年都没重启过。

具体操作时,用VMware Workstation创建虚拟机要注意几个关键点:

  1. 安装源选择阿里云镜像:http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os
  2. 软件选择界面务必勾选"Minimal Install"
  3. 网络配置建议先选NAT模式,等系统装好再调整

安装完成后你会惊喜地发现,系统自带的命令少得可怜。别慌,这正是最小化安装的精髓。我整理了几个必装工具:

yum install -y bash-completion net-tools vim wget curl

这些工具装好后,你的命令行体验会瞬间提升几个档次。特别是bash-completion,它能让你用Tab键自动补全命令和参数,效率直接翻倍。

2. 本地yum仓库深度配置

CentOS8停止维护后,官方源基本废了。上周我给客户部署内网环境时,发现连dnf命令都报404错误。这时候本地yum源就是救命稻草,而且速度比公网源快10倍不止。

2.1 镜像挂载的两种姿势

首先把CentOS8的ISO镜像挂载到/mnt/cdrom。这里有个坑要注意:直接mount /dev/cdrom可能会遇到"mount: no medium found"错误。我常用的解决方案是:

mkdir -p /mnt/cdrom
mount -o loop /path/to/CentOS-8.5.2111-x86_64-dvd1.iso /mnt/cdrom

如果想永久生效,记得在/etc/fstab添加:

/path/to/iso /mnt/cdrom iso9660 loop 0 0

2.2 仓库配置的艺术

清空/etc/yum.repos.d后,新建local.repo文件。这里我分享个高级玩法——把BaseOS和AppStream分开配置:

[BaseOS]
name=Local BaseOS
baseurl=file:///mnt/cdrom/BaseOS
gpgcheck=0
enabled=1

[AppStream]  
name=Local AppStream
baseurl=file:///mnt/cdrom/AppStream
gpgcheck=0
enabled=1

执行yum makecache时如果报错,试试先运行yum clean all && yum install -y createrepo。我在某次政府项目验收时就遇到这个坑,现场没外网差点翻车。

3. Docker引擎的离线部署

3.1 离线安装全攻略

在没有外网的环境下装Docker是个技术活。我总结了一套百分百成功的方案:

  1. 先准备好这些rpm包:

    • containerd.io
    • docker-ce
    • docker-ce-cli
    • docker-compose-plugin
  2. rpm -ivh按顺序安装,遇到依赖问题就加--nodeps参数

  3. 关键配置:

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF

3.2 镜像加速的野路子

在内网环境拉镜像简直折磨人。我的解决方案是:

  1. 找台能上网的机器先拉取镜像
  2. docker save导出为tar包
  3. 通过U盘或内网共享传到目标服务器
  4. docker load导入镜像

比如部署MySQL集群时:

docker pull mysql:8.0
docker save mysql:8.0 > mysql8.tar
# 传到目标机器后
docker load < mysql8.tar

4. 容器网络隔离实战

4.1 多网卡配置秘籍

给Docker容器配置独立网络需要先创建macvlan网络。这个操作有坑,我踩过三次才总结出完美方案:

docker network create -d macvlan \
  --subnet=192.168.0.0/24 \
  --gateway=192.168.0.1 \
  -o parent=ens33 \
  my_macvlan

关键参数说明:

  • parent指定物理网卡名,用ip a查看
  • 子网和网关要跟宿主机的网络匹配
  • 创建前先ifconfig看看网卡是否已启用

4.2 容器网络隔离方案

去年做金融项目时,客户要求每个微服务必须完全网络隔离。我的解决方案是:

  1. 为每个服务创建独立的macvlan网络
  2. 容器启动时指定固定IP:
docker run -d --name=mysql \
  --network=my_macvlan \
  --ip=192.168.0.100 \
  mysql:8.0
  1. 用iptables设置访问控制:
iptables -A DOCKER-USER -s 192.168.0.100 -j DROP

这种方案既保证了网络隔离,又能让运维人员通过宿主机统一管理。实测性能损耗不到3%,比用多个虚拟机部署节省了80%的资源。

更多推荐