You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器在Shell退出后终止运行问题求助

解决Docker容器依赖Shell会话、开机不自启问题

问题根源

你用docker-compose up -d启动的容器依赖当前Shell会话生命周期,且未配置系统级开机自启服务,导致退出Shell容器停止、重启服务器后需登录才启动。

步骤1:停止现有容器

先清理当前运行的容器(数据已挂载到卷,不会丢失):

docker-compose down

步骤2:创建systemd服务文件

在/etc/systemd/system/目录下创建postgres-pgadmin.service文件,内容如下:

[Unit]
Description=PostgreSQL & pgAdmin Docker Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/你的docker-compose.yml所在目录
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
  • 替换/你的docker-compose.yml所在目录为实际存放配置文件的路径
  • 若docker-compose路径不同,执行which docker-compose获取路径后替换/usr/bin/docker-compose

步骤3:配置开机自启并启动服务

systemctl daemon-reload
systemctl enable postgres-pgadmin.service
systemctl start postgres-pgadmin.service

验证操作

  • 执行systemctl status postgres-pgadmin.service检查服务运行状态
  • 执行docker ps确认容器是否正常启动
  • 退出Shell会话或重启服务器,再次验证容器持续运行状态

可选权限排查

如果容器启动失败,检查挂载卷的权限是否符合容器需求:

# 修复PostgreSQL数据卷权限(postgres用户UID为999)
chown -R 999:999 /data/docker/postgresql/data
# 修复pgAdmin数据卷权限(pgadmin用户UID为5050)
chown -R 5050:5050 /data/docker/postgresql/pgadmin-data

内容的提问来源于stack exchange,提问作者strtCoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:18:09