实践笔记:podman容器化实现centos-9-stream本地镜像站(可自动同步)
更新时间:20240626 Msg:修正了podman容器内自启动业务的方式
@写在前面:
为什么会有这个笔记,因为前两天我去朋友公司参观(去听吹牛 ),发现他们给实习生实操题目中有这么几个题目:
1、如何把ISO文件在本地建立镜像源
2、如何本地建立一个centos镜像站
3、如果在多个不同容器设备中同步数据
看了题目以后我有一种回到二十年前的感觉,
我就问我朋友,你为什么不把三个题目合并在一起出个题目:
题目:如何使用podman将centos的 ISO本地源部署成Web镜像站,然后实现所有podman容器数据更新同步化?
三个知识点不是都考察了,而且利用效能更高,所以下面这个文章就是来实践的。
一、实践思路
1、单一podman容器实现:
A:进入容器内部配置:
1.1、podman容器是可以和宿主机目录映射的,所以先把ISO在宿主机上挂载成目录,然后把这个目录和podman容器进行映射
- 准备一个podman基础镜像,这里选用centos-9-stream-cn
podman run -it 镜像id /bin/bash
1.1.1、 首先挂载ISO文件为目录
- ISO文件挂载后,centos系统中显示为/dev/sr0 第二个ISO文件就是/dev/sr1
mkdir -p /ISO
# 挂载目录
mount /dev/sr0 /ISO
# 追加文字到配置文件中
cat >> /etc/fstab << 'EOF'
/dev/sr0 /ISO auto ro,nofail 0 0
EOF
# 使配置生效
source /etc/fstab
1.1.2、 配置镜像站主目录
-
ISO文件挂载后其实是只读的,挂载以后的本地镜像源,还要实现镜像站作用(可以同步其他镜像源),那么就不能是只读的目录,所以先要配置Web Server主目录
mkdir -p /www/wwwroot/mrroios
-
使用软链接(相当于快捷方式)与ISO本地镜像目录/ISO进行挂载,centos-9-stream的ISO文件挂载以后默认生成的目录就一定是 /ISO/centos9stream
ln -s 本挂载的目标 生成的文件
ln -s /ISO/centos9stream 9-stream
1.2、在podman容器中配置nginx,配置镜像站。
1.2.1、 编译nginx-1.27.0
mkdir -p /home/downloads
wget https://nginx.org/download/nginx-1.27.0.tar.gz
tar -xzvf nginx-1.27.0.tar.gz
cd nginx-1.27.0
# 整理make清单,显示not found的就是需要补充安装的依赖,具体可以查log文件
./configure --prefix=/usr/nginx --with-http_ssl_module
- 编译及安装
make && make install
1.2.2、 配置nginx.conf
mkdir -p /www/vhost
vim nginx.conf
- 按下面的内容nginx.conf配置文档 保存
worker_processes 1;
error_log /www/wwwroot/logs/error.log info;
pid /www/wwwroot/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
gzip on;
server {
listen 80 ;
listen 443 ssl ;
server_name 域名 ;
ssl_certificate /www/</