首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器名称

Docker容器名称
EN

Stack Overflow用户
提问于 2018-08-25 21:48:22
回答 1查看 176关注 0票数 0

我正在使用Docker on Rails项目。我发现只有一种方法可以可靠地链接彼此的服务,即在docker-compose.yml中指定container_name。

代码语言:javascript
复制
version: '3'
services:
  db:
    container_name: sociaball_db
    ...
  web:
    container_name: sociaball_web
    ...
  sphinx:
    container_name: sociaball_sphinx
    ...

因此,现在我可以用database.yml编写类似这样的代码,而不必担心数据库容器将其名称从db随机更改为db_1

代码语言:javascript
复制
common: &common
  ...
  host: sociaball_db

但是,我只能同时运行三个容器。每当我尝试运行docker-container up时,如果一些容器没有关闭,它就会抛出一个错误。

代码语言:javascript
复制
ERROR: for sociaball_db  Cannot create container for service db: Conflict. The container name "/sociaball_db" is already in use by container "ee787c06db7b2a0205e3c1e552b6a5496545a78fe12d942fb792b27f3c38769c". You have to remove (or rename) that container to be able to reuse that name.

这非常不方便。它经常强制显式地删除所有容器,以确保它们没有机会被破坏。有没有办法绕过这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-26 16:50:54

当从一个编写文件运行多个容器时,将有一个默认网络,所有容器都附加到其中(如果没有以不同的方式指定)。

不需要通过容器或主机名引用容器,因为docker-compose会自动设置一些dns服务发现,其中每个docker-compose服务都可以通过其服务名称进行解析(密钥使用的级别比services:低一级)。

因此,名为db的名为web的服务可以访问您的数据库。不需要为此用例指定容器名称。有关更多详细信息,请参阅docker docs on networking,它还演示了一个访问数据库的rails应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52017929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档