podman实现网络隔离和容器开机自启动

发布时间:2025-10-29 02:34

使用移动设备优化连接:开启飞行模式在切换网络时加速,或者开启‘自动选择最佳网络’功能。 #生活技巧# #数码产品使用技巧# #无线网络优化#

ubuntu20.04安装Podman

读取当前系统的操作系统版本信息

. 是 source 命令的简写,会把这些变量加载进当前 Shell 环境。
后续命令中会使用 ${VERSION_ID} 获取系统版本号(比如 20.04、22.04)
. /etc/os-release

添加 Podman 的 APT 软件源

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

安装 Podman

apt install -y podman

查看版本

podman --version

让 Podman 容器开机自启动

方法一(不使用pod单容器)

1.生成 systemd 服务文件:

podman generate systemd --name (容器名字) --files
这会在当前目录生成 container-(容器名字).service 文件。

2.将服务文件复制到 systemd 目录:

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里了

再加入 mysql

podman 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

使用配置文件 再把pod创建出来

podman play kube my-pod.yaml

这样 之前的两个容器 也就创建回来了(可以无缝衔接切换到K8S上面运行)

网址:podman实现网络隔离和容器开机自启动 https://www.yuejiaxmz.com/news/view/1393781

相关内容

Podman设置容器开机自启
docker / podman 启动、停止全部容器的 命令
[收藏]网络安全知识:网络安全概念、内容和主要技术纵览
无线网络与服务器——开启智能生活 (wifi模块 服务器)
提升网速和网络稳定性的实用技巧
分隔器ALFALAVAL食品和饮料分离器
手机网络,便捷生活的全新篇章,手机网络,开启便捷生活新篇章,手机网络,开启便捷生活新篇章
萤石网络发布智能清洁机器人,开启家居清洁新时代
无源隔离器,无源隔离器厂家,无源隔离器报价
在家也能体验“赛博朋克”?一键开启现实版“机器人总动员”

随便看看