podman实现网络隔离和容器开机自启动
使用移动设备优化连接:开启飞行模式在切换网络时加速,或者开启‘自动选择最佳网络’功能。 #生活技巧# #数码产品使用技巧# #无线网络优化#
ubuntu20.04安装Podman
读取当前系统的操作系统版本信息. 是 source 命令的简写,会把这些变量加载进当前 Shell 环境。
后续命令中会使用 ${VERSION_ID} 获取系统版本号(比如 20.04、22.04)
. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
导入该源的 GPG 公钥curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
更新 APT 包索引sudo apt-get update
安装 Podmanapt install -y podman
查看版本podman --version
让 Podman 容器开机自启动
方法一(不使用pod单容器)
1.生成 systemd 服务文件:podman generate systemd --name (容器名字) --files
这会在当前目录生成 container-(容器名字).service 文件。
sudo mv container-(容器名字).service /etc/systemd/system/
3.启用并启动服务:sudo systemctl daemon-reload
sudo systemctl enable container-(容器名字).service
sudo systemctl start container-(容器名字).service
这样宿主机重启时,Podman 容器会自动启动。
方法二(使用Pod 在独立的网络命名空间中运行多个容器)
1.生成一个 systemd的配置文件podman generate systemd --name (容器名字) --files
2.在用户的home目录上 创建一个文件夹mkdir -p ~/.config/systemd/user/
3.把刚才生成的所有配置文件cp pod-my-pod.service container-*.service ~/.config/systemd/user/
4.刷新 systemd 用户配置缓存systemctl --user daemon-reload
5.启用并立即启动 Pod 服务systemctl --user enable --now pod-my-pod.service
6.允许用户级服务在用户未登录时也运行sudo loginctl enable-linger $(whoami)
实现网络隔离
Podman 的 Pod 概念,在一个独立的网络命名空间(private_net)中运行多个容器,实现网络隔离
1.创建一个私有网络podman network create private_net
2.然后分别运行 MySQL 和 Redis 容器,并接入该网络要在启动容器命令里加上这个 --network private_net \
拿MySql和Redis举例
podman run -d --name mysql8 \ --network private_net \ -p 3306:3306 \ -v /mhzch/mysql8.0.20/etc/mysql:/etc/mysql \ -v /mhzch/mysql8.0.20/logs:/var/log/mysql \ -v /mhzch/mysql8.0.20/data:/var/lib/mysql \ -v /mhzch/mysql8.0.20/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ mysql:8.0 podman run -d --name Mhzchredis \ --network private_net \ -p 6379:6379 \ -v /etc/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro \ -v /etc/redis/data:/data \ redis:latest redis-server /usr/local/etc/redis/redis.conf
podman pod 共享 网络空间 IPC命名 挂载卷
可以使用 podman 创建出一个 pod 然后把一个或多个容器添加进去(对pod的原生支持)
pod里面 所有容器公用同一个网络 同一个ip
1.创建 pod
--name 后面是自定义名字 添加映射
podman pod create --name my-pod -p 8081:8081
2.查看创建出来的pod
podman pod list
3.创建挂载路径
比如 redis
mkdir /etc/redis/data
4.启动容器
加上 --pod my-pod \
podman run -d --name Mhzchredis \ --pod my-pod \ -p 6379:6379 \ -v /etc/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro \ -v /etc/redis/data:/data \ redis:latest redis-server /usr/local/etc/redis/redis.conf
这样就加到了 刚刚创建的pod里了
再加入 mysqlpodman run -d --name mysql8 \ --pod my-pod \ -p 3306:3306 \ -v /mhzch/mysql8.0.20/etc/mysql:/etc/mysql \ -v /mhzch/mysql8.0.20/logs:/var/log/mysql \ -v /mhzch/mysql8.0.20/data:/var/lib/mysql \ -v /mhzch/mysql8.0.20/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ mysql:8.0
就可以显示出每个容器的 所属pod
podman ps --pod
就可以停止整个pod
podman pod stop my-pod
可以启动所有pod容器
podman pod start my-pod
5.把pod 导出成一个 k8s的配置文件 (my-pod.yaml 是一个配置文件名字 )
podman generate kube my-pod>my-pod.yaml
查看一下配置文件 (这是一份跟K8S兼容的配置文件)vi my-pod.yaml
执行 K8S命令 直接把这个pod导入K8S里面进行运行有了这个配置文件 可以在podman 里面把这个pod在创建回来
在本机测试 把刚刚创建的pod先删除
podman pod rm -f my-pod
podman play kube my-pod.yaml
这样 之前的两个容器 也就创建回来了(可以无缝衔接切换到K8S上面运行)
网址:podman实现网络隔离和容器开机自启动 https://www.yuejiaxmz.com/news/view/1393781
相关内容
Podman设置容器开机自启docker / podman 启动、停止全部容器的 命令
[收藏]网络安全知识:网络安全概念、内容和主要技术纵览
无线网络与服务器——开启智能生活 (wifi模块 服务器)
提升网速和网络稳定性的实用技巧
分隔器ALFALAVAL食品和饮料分离器
手机网络,便捷生活的全新篇章,手机网络,开启便捷生活新篇章,手机网络,开启便捷生活新篇章
萤石网络发布智能清洁机器人,开启家居清洁新时代
无源隔离器,无源隔离器厂家,无源隔离器报价
在家也能体验“赛博朋克”?一键开启现实版“机器人总动员”

