【问题标题】:docker change image name?码头工人更改图像名称?
【发布时间】:2021-07-08 09:25:10
【问题描述】:

我正在通过 docker compose 创建图像,但由于某种原因,名称会翻倍?

一切都很好,没有问题,但图像名称看起来像“poc_tool_poc_tool” 如何更改名称?还是添加版本控制?

码头工人ps:

c70753c4553e   poc_tool_poc_tool   "streamlit run --ser…"   17 minutes ago   Up 11 minutes   0.0.0.0:8889->8889/tcp   poc_tool_poc_tool_1

项目构建如下:

- poc_tool
   - app1
   - app2
   - app3
   - docker-compose.yml
   - Dockerfile

Dockerfile:

FROM python:3.8-slim-buster AS build
COPY app3 /app
COPY app1/src /app/src
COPY app2 /app/app2
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 8889
ENTRYPOINT ["streamlit","run","--server.port","8889"]
CMD ["app.py"]

码头工人撰写:

version: "3"
services:
  poc_tool:
    build: .
    volumes:
      ...
    ports:
      - "8889:8889"

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    Compose 为大多数事情生成自己的名称,它通常通过将project name(默认情况下,当前目录的名称)与docker-compose.yml 文件中的名称组合来实现这一点。如果您查看docker ps 输出,您可能会看到一个名为poc_tool_poc_tool_1 的容器;如果你查看docker network ls,你会看到poc_tool_default;如果你命名了卷,它们也会有这个前缀。

    docker-compose.yml 文件中,同时指定build:image: 是有效的。如果你这样做了,那么docker-compose build 使用image: 名称而不是生成自己的名称。

    version: "3"
    services:
      poc_tool:
        build: .
        image: registry.example.com/name/poc_tool:${TAG:-latest}
    

    (风格方面,这意味着您通常不需要将项目名称作为 Compose 服务名称的一部分。这也意味着image: 命名为基础很重要Dockerfile 的图像,因为 Compose 很乐意用您的应用程序代码覆盖它。)

    【讨论】:

      【解决方案2】:
       docker rename CONTAINER NEW_NAME
      

      还要检查这个以在 docker-compose 中命名它

      How to set image name in Dockerfile?

      【讨论】:

        【解决方案3】:

        要对 docker 映像进行版本控制,您可以使用 docker tag,如下所示。

        docker tag registry.example.com/OlderName registry.example.com/NewName:Version
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-02
          • 2021-08-27
          • 2018-05-02
          • 1970-01-01
          • 1970-01-01
          • 2017-02-01
          • 2018-10-05
          • 2011-08-17
          相关资源
          最近更新 更多