如何从另一个容器访问在 Docker 容器中运行的 Mopidy

Posted

技术标签:

【中文标题】如何从另一个容器访问在 Docker 容器中运行的 Mopidy【英文标题】:How do I access Mopidy running in Docker container from another container 【发布时间】:2018-07-03 18:15:28 【问题描述】:

首先,与通过控制台运行 Docker 相比,我更熟悉通过 Portainer 运行 Docker。

我在做什么:

目前,我正在通过一个容器运行 Mopidy,其他机器正在通过默认的 Mopidy 端口访问该容器。在另一个容器中,我正在运行一个使用 Limbo 存储库作为基础的 Slack 机器人。它们都在 Alpine Linux 上运行。

我需要什么:

我想做的是让我的 Slack 机器人能够调用 MPC 命令,例如静音等。这就是我卡住的地方。这个工作的最佳方式是什么

我尝试过的:

我可以通过 ssh 进入另一个容器来发送命令,但这样做没有意义,因为它们都在同一台服务器计算机上运行。

【问题讨论】:

【参考方案1】:

连接一堆容器的最佳方式是使用docker-compose.yml 文件定义一个服务堆栈,并使用docker-compose up 启动所有容器。这样,所有容器都将通过单个用户定义的bridge network 连接,这将使它们的所有端口都可以相互访问,而无需您明确发布它们。它还将允许容器通过 DNS 解析通过服务名称发现彼此。

docker-compose.yml 的示例:

version: "3"
services:
  service1:
    image: image1
    ports:
      # the following only necessary to access port from host machine
      - "host_port:container_port"
  service2:
    image: image2

在上面的例子中,service2 容器中的任何应用程序都可以通过使用service2:port 地址到达service1 上的某个端口。

【讨论】:

以上是关于如何从另一个容器访问在 Docker 容器中运行的 Mopidy的主要内容,如果未能解决你的问题,请参考以下文章

如何进入已经使用新 TTY 运行的 Docker 容器

mac的docker:从另一个容器访问mongo

从另一个容器访问一个容器中的 MySQL

从另一个 Docker 访问一个 Docker 中的 MariaDB

音频文件未从另一个 docker 容器播放

如何从 docker 容器访问 localhost? [复制]