我正在尝试找到一种解决方案,使主机上运行的进程/服务在容器内可用。例如,主机正在运行 Apache2 服务,其中有 4 个容器正在运行。就像使用 VOLUMNES 一样,我们可以将主机的目录链接到容器,有没有办法将 Apache2 服务的引用从主机分配到容器?
您问的问题很笼统,这使得这个问题很难回答,因为不同的服务以不同的方式与客户沟通。
但是让我们采用像 Apache 这样通过 http 进行通信的服务。您可以在主机的端口 8080 上运行该程序。然后,您可以使用
--addhost=host.docker.internal:host-gateway
命令上的 docker run
选项添加主机,然后您就可以从容器内部访问 host.docker.internal
处的主机。
作为示例,您可以使用curl图像并从容器内部访问Apache服务器,如下所示
docker run --rm --add-host=host.docker.internal:host-gateway curlimages/curl http://host.docker.internal:8080/
注意末尾的 URL (
http://host.docker.internal:8080/
),它将访问主机上的端口 8080。
来自Docker官方文档:
echo "hello from host!" > ./hello
python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
docker run \
--add-host host.docker.internal:host-gateway \
curlimages/curl -s host.docker.internal:8000/hello
hello from host!