繁体   English   中英

"docker-compose.yml 容器名和主机名"

[英]docker-compose.yml container_name and hostname

docker-compose.yml文件中的container_name有什么用? 我可以将它用作hostname ,它只是docker-compose.yml文件中的服务名称。

另外,当我在服务下明确写入hostname时,它是否会覆盖service name

hostname:只设置容器认为它自己的主机名是什么。 在不寻常的情况下,您在容器内有一个外壳,它可能会显示在提示中。 它对外面的任何东西都没有影响,通常也没有设置它的意义。 (它与主机名(1) 的效果基本相同:该命令不会导致主机外的任何内容知道您设置的名称。)

container_name:设置容器运行时的实际名称,而不是让 Docker Compose 生成它。 如果此名称与services:中的块名称不同,则这两个名称都可用作容器间通信的 DNS 名称。 除非您需要使用docker来管理 Compose 启动的容器,否则您通常也不需要设置它。

如果您省略这两个设置,一个容器可以使用services:的名称访问另一个(前提是它们在同一个 Docker Compose 文件中并且具有兼容的networks:设置) services:块和容器内的服务正在侦听的端口.

version: '3'
services:
  redis:
    image: redis
  db:
    image: mysql
    ports: [6033:3306]
  app:
    build: .
    ports: [12345:8990]
    env:
      REDIS_HOST: redis
      REDIS_PORT: 6379
      MYSQL_HOST: db
      MYSQL_PORT: 3306

最简单的答案如下:

container_name:这是您在使用docker container ls命令列出正在运行的容器时从主机看到的容器名称。

主机名:容器的主机名。 实际上,您在此处定义的名称将进入/etc/hosts文件:

$ exec -it myserver /bin/bash

bash-4.2# cat /etc/hosts
127.0.0.1   localhost
172.18.0.2  myserver

这意味着您可以在 Docker 网络中通过该名称 ping 机器。

我强烈建议将这两个参数设置为相同以避免混淆。

一个示例 docker-compose.yml 文件:

version: '3'
services:
    database-server:
        image: ...
        container_name: database-server
        hostname: database-server
        ports:
            - "xxxx:yyyy"

    web-server:
        image: ...
        container_name: web-server
        hostname: web-server
        ports:
            - "xxxx:xxxx"
            - "5101:4001" # debug port

您可以在docker-compose up期间自定义镜像名称以构建和容器名称,您需要在docker-compose.yml文件中提及如下。 它将创建一个具有自定义名称的图像和容器。

version: '3'
services:
  frontend_dev:
    stdin_open: true
    environment:
      - CHOKIDAR_USEPOLLING=true
    build:
      context: .
      dockerfile: Dockerfile.dev
    image: "mycustomname/sample:v1"
    container_name: mycustomname_sample_v1
    ports:
      - '3000:3000'
    volumes:
      - /app/node_modules
      - .:/app

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM