我有 podman 设置,如我所述Unix&Linux Stack Exchange 上的这个答案。我在 Rocky Linux 9 上运行它。
我进一步将用户会话设置为逗留,loginctl enable-linger $(whoami)
以便我可以在启动时使用 systemd 运行 podman 进程。我的系统文件是:
[Unit]
Description=Patches Service
Wants=network.target
After=network.target
Requires=user@${USER}.service
[Service]
Type=oneshot
TimeoutStartSec=10min
ExecStart=/bin/bash ${SCRIPT_DIR}/patches.sh start --continuous
[Install]
WantedBy=default.target
其中 patch.sh 脚本运行一系列共享公共容器网络后端的容器。前任:
podman run \
--name patches-nginx \
--env-file ${TOP_DIR}/.patches-nginx \
--volume ${SCRIPT_DIR}/nginx_config/nginx.conf:/etc/nginx/nginx.conf:Z \
--volume ${TOP_DIR}/${CERT_DIRECTORY}:/patches/${CERT_DIRECTORY}:z \
--publish 443:443 \
--publish 80:80 \
--detach \
--network host-bridge-net \
--restart=always \
docker.io/library/nginx:${NGINX_VERSION}
我注意到,完成此设置后,重新启动服务器时会发生以下情况:
我正在调试过程中,但我不清楚是什么原因导致挂起。任何指导表示赞赏。
答案1
当您为容器本身分配了与 systemd 冲突的重启策略时,就会发生这种情况。当我使用时podman generate systemd
我看到:
WARN[0000] Container 59590e79e4fc95158b74360fa6491a907c6a7cafa1b24d9ff34117a8a15cfc03 has restart policy "unless-stopped" which can lead to issues on shutdown: consider recreating the container without a restart policy and use systemd's restart mechanism instead
和
WARN[0000] Container 574fd77e6dc57eeac56358003e73ecf122058d3c212201c5b24b200c836df798 has restart policy "always" which can lead to issues on shutdown: consider recreating the container without a restart policy and use systemd's restart mechanism instead
使用 systemd 时,您应该使用 systemd 的策略,例如:Restart=on-failure
重新启动容器而不是容器本身。如果不这样做,容器将在关闭时崩溃。