
文章目录一、前置说明二、创建虚拟机三、开始安装四、安装配置五、远程连接六、静态网络设置一查看当前网络状态二设置静态 IP2.1 设 IP2.2 设网关2.3 设 DNS2.4 将获取方式从 “自动” 改为 “手动”三重启网络让配置生效四验证七、安装Docker一卸载系统自带的 Podman二安装基础依赖并添加官方库三安装 Docker 全家桶四设置开机自启五小技巧六镜像拉取测试七容器创建1. Redis 容器2. MySQL 容器3. Nginx 容器4. MinIO 容器5. Docker 常用命令八、GCC编译器安装一、前置说明下载AlmaLinux镜像ISO地址ALmaLinux下载AlmaLinux/版本号/isos/x86_64/有图形界面DVDISO包含完整软件包服务器Minimal ISO最小化安装准备VMware软件版本选16.x 或 17.x以上电脑在BIOS中开启CPU虚拟化功能注本次栗子VMWare16 ALmaLinux-9-latest-x86_64-minimal.iso二、创建虚拟机配置类型安装来源客户机操作系统命名虚拟机磁盘容量自定义硬件内存至少2GB处理器至少2核网络适配器NAT模式三、开始安装开启虚拟机选择第一项四、安装配置语言安装目标位置网络和主机名找到网卡通常叫eth0 或 ens33,ALmaLinux中是ens160开关拨到ONroot密码创建用户完成重启输入用户名和密码验证网络ping www.baidu.com7. 更新系统sudodnf update-y五、远程连接六、静态网络设置一查看当前网络状态NAME连接名通常是System eth0 或 和网卡名一致栗ens160 或 eth0DEVICE设备名实际的网卡名栗eth0nmcli connection show二设置静态 IP通过虚拟机查看当前自动获取的 IP 和 网关网关192.168.198.5IP 地址192.168.198.1462.1 设 IP静态设置为192.168.198.x/24代表子网掩码255.255.255.0家庭网络通常都是这个sudonmcli connection modify ens160 ipv4.addresses192.168.198.100/242.2 设网关sudonmcli connection modify ens160 ipv4.gateway192.168.198.52.3 设 DNS可选DNS如下 阿里223.5.5.5223.6.6.6 腾讯119.29.29.29182.254.118.118 百度180.76.76.76 谷歌8.8.8.88.8.4.4 114DNS114.114.114.114115.115.115.115sudonmcli connection modify ens160 ipv4.dns223.5.5.52.4 将获取方式从 “自动” 改为 “手动”sudonmcli connection modify ens160 ipv4.method manual三重启网络让配置生效sudonmcli connection down ens160sudonmcli connection up ens160四验证查看 IPipaddr测试能否上网pingwww.baidu.com七、安装Docker一卸载系统自带的 Podmansudodnf remove-ypodmanbuildah二安装基础依赖并添加官方库阿里云版推荐sudodnfinstall-ydnf-plugins-coresudodnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 官方版sudodnfinstall-ydnf-plugins-coresudodnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo三安装 Docker 全家桶sudodnfinstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin安装成功后查看版本docker-v四设置开机自启sudosystemctl startdockersudosystemctlenabledocker五小技巧免去每次输入命令需要输入sudosudousermod-aGdocker$USER配置国内镜像源sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json-EOF { registry-mirrors: [ https://docker.m.daocloud.io, https://docker.xuanyuan.me ] } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker六镜像拉取测试dockerpull mysql:8.0.36dockerpull nginx:1.30.0dockerpull redis:7.2.5dockerpull minio/minio:RELEASE.2025-04-22T22-12-26Z七容器创建1. Redis 容器--name redis给容器起个名字叫 redis-p 6379:6379端口映射-v /opt/redis/data:/data把数据存在宿主机的 /opt/redis/data目录下防止容器删了数据就没了redis-server --appendonly yes开启 AOF 持久化保证数据安全dockerrun-d\--nameredis\-p6379:6379\-v/opt/redis/data:/data\redis:7.2.5 自启动端口映射数据持久化dockerrun-d\--nameredis\--restartalways\-p6379:6379\-v/opt/redis/data:/data\redis:7.2.5\redis-server--appendonlyyes2. MySQL 容器-e MYSQL_ROOT_PASSWORD123456设置 root 密码-v /opt/mysql/data:/var/lib/mysql数据目录挂载-v /opt/mysql/conf:/etc/mysql/conf.d配置文件目录挂载--character-set-serverutf8mb4设置默认字符集为 utf8mb4支持 Emoji 表情dockerrun-d\--namemysql8.0\-p3306:3306\-eMYSQL_ROOT_PASSWORD123456\-eTZAsia/Shanghai\-v/opt/mysql/data:/var/lib/mysql\-v/opt/mysql/conf:/etc/mysql/conf.d\mysql:8.0.36\--character-set-serverutf8mb4\--collation-serverutf8mb4_unicode_ci 自启动端口映射dockerrun-d\--namemysql\--restartalways\-p3306:3306\-eMYSQL_ROOT_PASSWORDRoot123456\-v/opt/mysql/data:/var/lib/mysql\-v/opt/mysql/conf:/etc/mysql/conf.d\mysql:8.0.36\--character-set-serverutf8mb4\--collation-serverutf8mb4_unicode_ci安装成功后的初始目录information_schema mysql performance_schema sys3. Nginx 容器-v /opt/nginx/html:/usr/share/nginx/html网页文件目录-v /opt/nginx/conf:/etc/nginx/conf.d配置文件目录-v /opt/nginx/logs:/var/log/nginx日志目录注第一次运行前先将宿主机建好/opt/nginx/conf目录并放一个default.conf进去否则 Nginx 可能会用默认配置启动dockerrun-d\--namenginx\-p80:80\-p443:443\-v/opt/nginx/html:/usr/share/nginx/html\-v/opt/nginx/conf:/etc/nginx/conf.d\-v/opt/nginx/logs:/var/log/nginx\nginx:1.30.0 自启动端口映射dockerrun-d\--namenginx\--restartalways\-p80:80\-p443:443\-v/opt/nginx/html:/usr/share/nginx/html\-v/opt/nginx/conf:/etc/nginx/conf.d\-v/opt/nginx/logs:/var/log/nginx\nginx:1.30.0default.conf内容server{# 监听 80 端口listen80;# 监听 IPv6listen[::]:80;# 你的域名或 IP_ 代表匹配所有server_name _;# -------------------------------------------------------# 1. 安全设置隐藏 Nginx 版本号# -------------------------------------------------------server_tokens off;# -------------------------------------------------------# 2. 前端静态文件配置 (SPA 单页应用)# -------------------------------------------------------location /{# 对应你刚才创建的 /opt/nginx/html 目录root /usr/share/nginx/html;# 默认索引文件index index.html index.htm;# 关键配置解决 Vue/React 路由刷新 404 的问题# 如果找不到文件就返回 index.html让前端路由去处理try_files$uri$uri/ /index.html;}# -------------------------------------------------------# 3. 反向代理后端 API 接口# -------------------------------------------------------# 假设你的后端服务运行在宿主机的 8080 端口location /api/{# 注意这里如果是连接宿主机的服务Docker 里通常用 host.docker.internal# 或者你后面启动后端容器时把后端容器命名为 backend这里就写 http://backend:8080/proxy_pass http://host.docker.internal:8080/;# 传递真实的客户端 IPproxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto$scheme;}# -------------------------------------------------------# 4. 反向代理MinIO 控制台 (可选)# -------------------------------------------------------# 如果你想通过 Nginx 访问 MinIO (比如 http://ip/minio/)location /minio/{proxy_pass http://host.docker.internal:9001/;proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto$scheme;}# -------------------------------------------------------# 5. 错误页面配置# -------------------------------------------------------error_page500502503504/50x.html;location/50x.html{root /usr/share/nginx/html;}}server{listen80;listen[::]:80;server_name _;server_tokens off;location /{root /usr/share/nginx/html;index index.html index.htm;try_files$uri$uri/ /index.html;}location /api/{proxy_pass http://host.docker.internal:8080/;proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto$scheme;}location /minio/{proxy_pass http://host.docker.internal:9001/;proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto$scheme;}error_page500502503504/50x.html;location/50x.html{root /usr/share/nginx/html;}}4. MinIO 容器-p 9000:9000API 端口-p 9001:9001Web 管理后台端口-e MINIO_ROOT_USERadmin设置后台登录用户名-e MINIO_ROOT_PASSWORDadmin123456设置后台登录密码至少 8 位server /data --console-address :9001启动服务并指定控制台端口dockerrun-d\--nameminio\-p9000:9000\-p9001:9001\-v/opt/minio/data:/data\-eMINIO_ROOT_USERadmin\-eMINIO_ROOT_PASSWORDadmin123456\minio/minio:RELEASE.2025-04-22T22-12-26Z\server /data --console-address:9001自启动端口映射dockerrun-d\--nameminio\--restartalways\-p9000:9000\-p9001:9001\-v/opt/minio/data:/data\-eMINIO_ROOT_USERadmin\-eMINIO_ROOT_PASSWORDadmin123456\minio/minio:RELEASE.2025-04-22T22-12-26Z\server /data --console-address:90015. Docker 常用命令启动docker systemctl startdocker停止docker systemctl stopdocker重启docker systemctl restartdocker拉取镜像dockerpull 查看镜像dockerimages 删除镜像dockerrmi 启动容器dockerstart 容器名 停止容器dockerstop 容器名 查看容器dockerps删除容器dockerrm容器名八、GCC编译器安装检查是否安装gcc gcc--version安装gccsudoyuminstallgcc 或sudodnfinstallgcc 安装gsudoyuninstallgcc-c