【原创】在Debian12下安装podman最新版,并在无根模式下启动容器
本帖最后由 eam8 于 2023-9-16 18:33 编辑一,安装podman
1,导入apt keysudo apt update
sudo apt install gnupg
source /etc/os-release
wget http://downloadcontent.opensuse.org/repositories/home:/alvistack/Debian_$VERSION_ID/Release.key -O alvistack_key
cat alvistack_key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/alvistack.gpg>/dev/null2,添加podman安装源:echo "deb http://downloadcontent.opensuse.org/repositories/home:/alvistack/Debian_$VERSION_ID/ /" | sudo tee/etc/apt/sources.list.d/alvistack.list3,安装podman及所需插件sudo apt update
sudo apt -y install podman uidmap dbus-x11 slirp4netns libpam-systemd podman-aardvark-dns podman-netavark podman-docker
sudo reboot二,配置podman
1,添加国内docker镜像加速sudo nano /etc/containers/registries.conf1.1,在打开的配置中添加如下代码:# unqualified-search-registries = ["docker.io"]
[]
prefix = "docker.io"
location = "docker.m.daocloud.io"2,添加一个普通用户作为无根用户【如:podman】,并将其加入subuid和subgid中sudo useradd -r -m-s /bin/bash podman
echo "podman:100000:65536" | sudo tee -a /etc/subuid
echo "podman:100000:65536" | sudo tee -a /etc/subgid3,设定无根用户podman无需登陆也能开机启动无根容器sudo loginctl enable-linger podman4,切换到无根用户podman并解决运行容器里命令出现"Failed to connect to bus: 找不到介质"的问题sudo su -l podman
nano .bashrc
# 在当前用户目录下编辑.bashrc,在最后面添加如下内容:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
# 刷新
source .bashrc5,重置podman,使用能正常使用aardvark-dns$ podman system reset --force三,容器相关示例,均在podman无根用户下进行
1,创建桥接网络network01,并指定ip段为192.168.188.0/24podman network create --subnet 192.168.188.0/24 network012,在容器中运行数据库postgresql
2.1, 创建数据配置和储存映射卷mkdir -p /home/podman/pgdata2.2,拉取postgresql并运行容器podman run \
--name postgres \
--network network01 \
--log-driver json-file \
--log-opt max-size=1m \
--log-opt max-file=1 \
-p 5432:5432 \
-v /home/podman/pgdata:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=my_password \
-e LANG=C.UTF-8 \
-d postgres:alpine
3,容器运行pgadmin4来管理posgresql数据库podman run -d \
--name pgadmin4 \
--network network01 \
-p 5433:80 \
--log-driver json-file \
--log-opt max-size=1m \
--log-opt max-file=1 \
-e PGADMIN_DEFAULT_EMAIL=mail_user@mail.com \
-e PGADMIN_DEFAULT_PASSWORD=my_password \
dpage/pgadmin4:latest4,添加开机启动podman generate systemd --files --name postgres
podman generate systemd --files --new --name pgadmin4 ## --new 参数在systemctl停止容器时会删除容器,相当于docker的 --rm
mkdir -p .config/systemd/user/
mv *.service ~/.config/systemd/user/
systemctl --user enable container-postgres.service
systemctl --user enable container-pgadmin4.service5, 查看容器通信cat /run/user/1000/containers/networks/aardvark-dns/network01## 查看容器网络的ip分配及dns解析5.1,测试容器通信podman exec -it postgres ping pgadmin4## 容器互通测试
podman exec -it postgres ping host.containers.internal ## host.containers.internal代表宿主机6,在postgers容器中添加数据库及用户密码podman exec -it postgres psql -U postgres
CREATE USER dbuser WITH password 'dbuser_password';
CREATE DATABASE userdb ENCODING 'UTF8' OWNER dbuser;
# 有些特殊要求的数据库,如指定语言'C'
CREATE DATABASE matrixdb
ENCODING 'UTF8'
LC_COLLATE='C'
LC_CTYPE='C'
template=template0
OWNER matrixuser;
收集资料不易,欢迎指正。
感谢楼主分享,以前一直用docker,试试podman的效果。 不知道为啥,发贴审核完后,丢失很多代码,再次编辑了,若还有问题,请留言 podman 多谢分享
页:
[1]