docker - docker-compose中的hostname属性

标签 docker docker-compose dockerfile

在下面的docker-compose文件中,

dbc:
  image: mysql:5.6
  hostname: db
  expose:
    - "3386"
  environment:
    MYSQL_DATABASE: somebackenddb
    MYSQL_USER: user1
    MYSQL_PASSWORD: pswd
    MYSQL_ROOT_PASSWORD: pswd

agent:
  image: somedockerhub/ansible
  volumes:
    - ../../whatever/x.yml:/whatever/y.yml
  links:
    - dbc
  environment:
    PROBE_HOST: "db"
    PROBE_PORT: "3306"

我们在hostname服务中使用dbc属性。
agent服务链接到其值为hostnamedb
通常,主机名被赋予虚拟机。

每个容器都有一个IP地址,但是,

对于由dbc服务启动的容器,hostname对容器意味着什么?

最佳答案

docker容器的By default主机名等于其容器ID。

在docker-compose文件中定义属性hostname: db会将dbc服务容器的主机名设置为db

如果使用docker exec -it [container_id] bash输入创建的容器

并运行hostname命令,您应该看到db

运行hostname -i将显示虚拟IP地址。
cat /etc/hosts将显示:
...172.17.0.4 db
环保变量HOSTNAME内部容器将等于db

关于docker - docker-compose中的hostname属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464250/

相关文章:

docker - 来自守护程序的错误响应:无法启动容器[8]系统错误:没有这样的文件或目录

docker - 您可以在 VM 中下载没有 Docker 的 Docker 镜像吗?

docker - 如何将 docker 容器绑定(bind)到特定的外部接口(interface)

caching - Docker:如何在容器中安装memcached

docker - 如何调试Docker容器的启动

postgresql - 无法访问在 docker 入口点文件中创建的 postgres 扩展,直到我在 psql 中手动创建它

c# - 拉取访问被拒绝,存储库不存在或可能需要授权 : server message: insufficient_scope:authorization failed

git - 在 GitLab CI 下的 Docker Compose 中从 git 构建时出现 "error initializing submodules"

docker - 在Docker-Compose中控制启动顺序

linux - gpg key 请求在 dockerfile 中失败但在 bash 中失败