【问题标题】:Docker: Set container name inside DockerfileDocker:在 Dockerfile 中设置容器名称
【发布时间】:2022-03-23 09:22:51
【问题描述】:

有没有办法可以在 Dockerfile 中设置容器名称?基本上我希望始终使用相同的名称,这样我就不必在构建和运行图像后运行“$docker ps”来获取它的名称。

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    Dockerfile 用于创建图像而不是容器。

    您现在可以使用 docker run 的新 --name 标志为您的容器命名。

    如果未提供--name,Docker 将自动为容器名称生成一个字母数字字符串。

    【讨论】:

    • 我赞成这个答案,因为它清楚地指出了容器和问题图像之间的实际混淆。也就是说,如果您想自动化那个 container 名称,这仍然可以通过 docker-compose 方式实现
    • 虽然也可以在构建阶段标记图像:docker build -t tagname 以 'name:tag' 格式,这又可以用于 `docker run tagname'class="comcopy">跨度>
    【解决方案2】:

    您是否有理由需要在 dockerfile 中定义它,而不仅仅是在运行容器时为其命名?

    如果你使用 docker run 来运行你的镜像,那么在命令行中指定名称:

    --name=""                     Assign a name to the container
    

    Docker Run reference

    【讨论】:

    • 是的,因此您不必每次运行它们时都设置名称,并且对每个人都定义相同,例如在开发环境中
    【解决方案3】:

    我正在添加基于emoxxx's response 的另一个选项。您可以在现有的 Dockerfile 周围包装一个非常简单的 docker-compose.yml 来命名容器。因此,您保持现有的 Dockerfile 不变,只需从一个新的非常基本的 docker-compose.yml 文件中调用它即可获取 container_name 配置选项。

    在现有 Dockerfile 所在的同一文件夹中创建一个新的 docker-compose.yml 文件。新的 docker-compose.yml 可能如下所示:

    version: '2'
    services:
      myservice:
      build:
        context: .
        dockerfile: Dockerfile
      container_name: 'the_new_container_name'
    

    然后你只需运行它:

    docker-compose up
    

    而不是 docker 运行。它仍然会执行您在 Dockerfile 中配置的所有操作。

    【讨论】:

      【解决方案4】:

      您可以从 docker-compose.yml 创建一个容器并为其命名,您可以使用:

      container_name:
      

      看这个例子:

      version: '3.7'
      
      services:
        grafana:
          image: grafana/grafana
          container_name: grafana
          restart: always
          ports:
            - 3000:3000
          networks:
            - monitoring
          volumes:
            - grafana-volume:/var/lib/grafana
      

      如果你不使用 Docker compose,你可以在命令行中使用 --name,如下所示:

      docker run --name=grafana
      

      【讨论】:

      • 问题是关于 Dockerfile,您正在描述如何在 docker compose 文件中执行此操作,这不是问题的答案。尽管如果他们是 Docker 新手,这可能对他们有所帮助,但它仍然不是问题的真正答案。还是我错了?
      • 亚历克斯你完全正确!我编辑我的帖子是因为我觉得它给整个讨论带来了一点启发,这样做对我来说也更清楚......感谢您的正确观察!
      • 它没有回答问题,但它及时提醒自己,当我有 docker-compose 为我做这件事时,不要再愚蠢地手动运行 docker。
      猜你喜欢
      • 2016-07-23
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      相关资源
      最近更新 更多