如何使 docker 主机上运行的任何服务对其容器可用?

问题描述 投票:0回答:2

我正在尝试找到一种解决方案,使主机上运行的进程/服务在容器内可用。例如,主机正在运行 Apache2 服务,其中有 4 个容器正在运行。就像使用 VOLUMNES 一样,我们可以将主机的目录链接到容器,有没有办法将 Apache2 服务的引用从主机分配到容器?

docker containers docker-machine
2个回答
1
投票

您问的问题很笼统,这使得这个问题很难回答,因为不同的服务以不同的方式与客户沟通。

但是让我们采用像 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。


0
投票

来自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!
© www.soinside.com 2019 - 2024. All rights reserved.