繁体   English   中英

如何获取主机名并重命名 docker 容器?

[英]How to obtain hostname and rename docker container on that?

我的后端服务有一个 docker-compose 文件,如下所示。

backend:
    container_name: backend
    build:
      context: .
      dockerfile: docker/dev.Dockerfile
      # TODO: Try using cache_from pointed at a Docker Hub image built from master
      # Though may need to also use the workaround for local vs remote:
      # https://github.com/moby/moby/issues/32612#issuecomment-294055017
      # cache_from: TODO
    image: treeherder-backend
    privileged: true
    environment:
      # Development/CI-specific environment variables only.
      # Those that do not vary across environments should go in `Dockerfile`.
      - BROKER_URL=amqp://guest:guest@rabbitmq//
      - DATABASE_URL=${DATABASE_URL:-mysql://root@mysql/treeherder}
      - GITHUB_TOKEN=${GITHUB_TOKEN:-}
      - UPSTREAM_DATABASE_URL=${UPSTREAM_DATABASE_URL:-}
      - PERF_SHERIFF_BOT_CLIENT_ID=${PERF_SHERIFF_BOT_CLIENT_ID:-}
      - PERF_SHERIFF_BOT_ACCESS_TOKEN=${PERF_SHERIFF_BOT_ACCESS_TOKEN:-}
      - PULSE_AUTO_DELETE_QUEUES=True
      - REDIS_URL=redis://redis:6379
      - SITE_URL=http://backend:8000/
      - TREEHERDER_DEBUG=True
      - NEW_RELIC_INSIGHTS_API_KEY=${NEW_RELIC_INSIGHTS_API_KEY:-}
      - HOSTNAME=${HOSTNAME:-}
    entrypoint: './docker/entrypoint.sh'
    # We *ONLY* initialize the data when we're running the backend
    command: './initialize_data.sh ./manage.py runserver 0.0.0.0:8000'
    # Django's runserver doesn't listen to the default of SIGTERM, so docker-compose
    # must send SIGINT instead to avoid waiting 10 seconds for the time out.
    stop_signal: SIGINT
    # https://github.com/SeleniumHQ/docker-selenium#running-the-images
    shm_size: 2g
    volumes:
      - .:/app
    ports:
      - '8000:8000'
    depends_on:
      - mysql
      - redis
      - rabbitmq
    stdin_open: true
    tty: true

我想通过选取它运行的主机名来动态命名这个容器,并在该值上重命名自己。 请让我知道是否有任何方法可以做到这一点

容器的当前主机名 - docker 的随机字符串

容器的所需主机名 - 将在其上运行的主机系统的 $(whoami)-$(hostname)

您可以在运行容器时为其命名(您没有指定如何运行容器,所以我假设您使用docker run )。

这是通过以下方式实现的: docker run -d --name YOUR_NAME YOUR_IMAGE

这样,您可以将YOUR_NAME作为包含所需字段的变量,例如,运行ubuntu:latest容器:

name=$(whoami)-$(uname -n)
docker run -d --name $name ubuntu:latest

暂无
暂无

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

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