Docker:从容器访问主机上的服务

标签 docker networking docker-compose containers devops

我需要使用 docker-compose 设置文件从 docker 容器访问在主机上运行的服务。

此外,此时我不知道是否能够更改容器中应用程序使用的主机名,因此服务必须在“localhost”主机上可用。

我知道如何使用 docker run 来做到这一点:docker run --net="host" ... - 它完全按照我的需要工作:例如我可以 wget http://localhost从容器中,我将收到由主机的 Web 服务器提供的文件。

我不知道如何在 docker-compose.yml 中配置相同的内容

我试过了

version: '3'

services:

  nginx:
    container_name: cont
    image: ubuntu
    command: sleep 10000000
    networks:
      - host

networks:
  host:

但无法重现相同的功能。 我怎么做? 谢谢!

最佳答案

根据docker-compose在文档中,您应该使用 network_mode: "host" 语句。

最终的docker-compose.yaml是:

version: '3'
services:
  nginx:
    container_name: cont
    image: ubuntu
    command: sleep 10000000
    network_mode: "host"

关于Docker:从容器访问主机上的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943509/

相关文章:

docker - docker内部的http调用错误证书由未知的权威机构签名

java - 处理网络(URL、连接等)时要捕获哪些未经检查的异常?

Java - 地址已在使用中(网络绑定(bind))

laravel - 运行Docker时,安装PHP8.1时返回错误

docker - 我可以使用 docker-compose 在分离模式下仅运行特定容器吗?

docker - 让我们在 Docker 和 Nginx 中加密 SSL token 的卷

node.js - 使用来自 Docker 的 env 变量的 React 连接被拒绝错误

docker - 我可以在构建期间根据先前运行命令的输出设置 docker 容器标签吗?

networking - Clojure (aleph) 检测服务器何时断开连接

python - 模块未找到错误: No module named 'pymongo' with Docker and Airflow