我有一个nginx
Docker容器,它可以从命令行正常运行,但在 Boot 时不重新启动。它是用--restart=on-failure
启动的,我知道 * 应该 * 也在引导时启动它(它在我的其他Docker容器上当然也是这样工作的)。
docker run --name nginx --restart=on-failure --detach --mount type=bind,source=/etc/ssl,target=/etc/ssl,readonly --mount type=bind,source=/etc/pki,target=/etc/pki,readonly --mount type=bind,source=/etc/letsencrypt,target=/etc/letsencrypt,readonly -p 443:443 -d nginx
你知道为什么会出现这种情况吗?或者我如何找出问题所在?docker logs nginx
什么也没给我,只是到机器关机结束的日志。这是Centos 8上的日志,如果有必要,nginx
配置文件包含:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myurl.net;
ssl_certificate /etc/letsencrypt/live/myurl.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myurl.net/privkey.pem;
ssl_client_certificate /etc/ssl/certs/my_ca.crt;
ssl_crl /etc/ssl/CA/ca.crl;
ssl_verify_client on;
location / {
proxy_pass http://172.17.0.1:8080/;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
...其中location
线路位于本地Docker网络上,该网络允许nginx
与运行HTTP服务器的另一个Docker容器通信,HTTP服务器最终提供服务(nginx
只是在循环中通过SSL执行客户端身份验证)。
1条答案
按热度按时间dpiehjr41#
正如@triplee所指出的,当机器重新启动时,
--restart=on-failure
* 实际上并没有 * 启动Docker容器,只有在某些情况下,如果所讨论的Docker映像在系统关闭时没有优雅地退出,它才会 * 出现 * 这样做:镜像出现故障,因此Docker将在计算机恢复时重新启动它。正确的指令是使用
--restart=always
,以确保Docker映像表现良好,像nginx
映像一样优雅地退出,因此不会引发错误。