str*_*ing 6 docker docker-compose
我正在运行一个docker-compose up -d使用独立命令创建的 debian 支持的 docker 容器。它启动时没有问题,并且服务请求也没有问题,但它要求我保持使用活动 shell 登录才能保持容器运行。
我的 docker-compose.yml 文件如下:
\nservices:\n db:\n image: postgres:alpine\n restart: always\n ports:\n - '5432:5432' \n volumes:\n - /data/docker/postgresql/data:/var/lib/postgresql/data:Z\n pgadmin:\n image: dpage/pgadmin4:latest\n restart: always\n ports:\n - "5050:80"\n volumes:\n - /data/docker/postgresql/pgadmin-data:/var/lib/pgadmin:Z\nRun Code Online (Sandbox Code Playgroud)\n每次我重新启动服务器时,它似乎都不会启动,直到我登录为止。
\ndocker 服务的状态如下systemctl status docker.service:
\xe2\x97\x8f docker.service - Docker Application Container Engine\n Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)\n Active: active (running) since Tue 2022-08-09 22:37:46 -03; 21min ago\nTriggeredBy: \xe2\x97\x8f docker.socket\n Docs: https://docs.docker.com\n Main PID: 4359 (dockerd)\n Tasks: 11\n CPU: 1.396s\n CGroup: /system.slice/docker.service\n \xe2\x94\x94\xe2\x94\x804359 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\nRun Code Online (Sandbox Code Playgroud)\n即使一切看起来都很好,当我注销 shell 会话时,容器就会停止运行。
\nstr*_*ing 10
我遇到的问题可以搜索:
一旦用户会话退出,无根容器就会退出
在意识到我正在使用 docker 的无根配置并且两个容器都开始使用普通用户后,我终于可以修复它了。
如果 loginctl 配置为不使用延迟,Linux 将停止普通用户启动的进程,以防止普通用户在系统中继续执行长时间运行的进程。
我发现这个链接有帮助:17)一旦用户会话退出,无根容器就会退出
您需要通过 loginctl 设置延迟模式,以防止用户会话完成后用户进程被终止。
症状
一旦用户注销,所有容器都会退出。
解决方案
您需要:
# loginctl enable-linger $UID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2285 次 |
| 最近记录: |