我在 Centos 7.5 上设置了 NGINX,监听端口 80,并将流量引导到 Gunicorn 服务器。这是该服务器的主要用途,这些是本地安装的应用程序,到目前为止还没有容器。
现在,我想在 Docker 容器中运行一些服务,并让不同的子域(或端口)将流量重定向到相关容器。
具体示例-SVN服务器
我对整个 Docker 概念还很陌生,而且某些容器缺乏具体文档,这确实让我感到困惑。我设法取得了一些进展这个 SVN 服务器容器。这是我使用的命令:
docker run -d --name svn-server -p 80:80 -p 3960:3960 -v /home/svn:/home/svn elleflorio/svn-server
这是我目前所拥有的:
- SVN 服务器可通过以下方式访问http://我的网站/svn(端口 80)。
- 容器成功绑定到本地目录,即使容器被删除,存储库数据仍可保留,这非常好。
- 我可以在容器内运行命令,创建用户,添加存储库。
存在以下问题:
- 我不得不停止 NGINX,因为它也需要端口 80。
- 到目前为止,让容器在不同端口上运行还没有成功,当我只是想改变参数时,它不起作用
-p
;我尝试暂时禁用 SELinux,但没有帮助。 - 如果我可以在不同端口上运行容器,我可以将流量从子域重定向到该端口,但我确信使用 Docker 容器有更好的做法。
- 如果我设法让它工作——我该如何确保容器在主机重启时重新启动?
答案1
要使容器使用端口 8080 而不是其已发布的端口 80,请使用docker run ... -p 8080:80 ...
。第一个数字是您可以在主机上连接的端口,而第二个数字是容器上的“本机”端口。此 {host}:{container} 约定在其他地方使用。
确保您已经停止当前容器(docker ps
列出正在运行的容器),否则您将有一个使用端口 80 的残留容器。
要在启动时重新启动容器,您可以创建一个执行以下一项的 systemd 服务docker run ...
。