首页 > 解决方案 > Docker 正在制作额外的图像

问题描述

当我运行我的docker-compose up -d命令时,它会运行所有很酷的 buuut 它会创建很多图像我不知道这是否应该是正常行为,但它看起来像这样

Status: Downloaded newer image for node:11.1.0
 ---> 4e4c445311e6
Step 2/8 : RUN mkdir /usr/src/app
 ---> Running in 3b78051548b7
Removing intermediate container 3b78051548b7
 ---> 96e53f58ca4a
Step 3/8 : WORKDIR /usr/src/app
 ---> Running in 6c09aca5e321
Removing intermediate container 6c09aca5e321
 ---> a392a2bdd279
Step 4/8 : ENV PATH /usr/src/app/node_modules/.bin:$PATH
 ---> Running in 9443cc34dc2a
Removing intermediate container 9443cc34dc2a
 ---> 6ba4c2ed0014

如您所见,它每一步都会生成一个新图像

在这里您可以看到该命令制作的图像列表

somethinghere_somethinghere   latest              4163a2ac78cc        14 minutes ago      1.23GB
<none>                              <none>              2af2d216914a        14 minutes ago      1.23GB
<none>                              <none>              2471e3d94378        15 minutes ago      1.11GB
<none>                              <none>              6ba4c2ed0014        15 minutes ago      894MB
<none>                              <none>              71141d30cec8        15 minutes ago      894MB
<none>                              <none>              a392a2bdd279        15 minutes ago      894MB
<none>                              <none>              96e53f58ca4a        15 minutes ago      894MB

这里将向您展示我的 docker-compose 和 dockerfile

Dockerfile

# base image
FROM node:11.1.0

# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
RUN npm install react-scripts@1.1.1 -g --silent

# start app
CMD ["npm", "start"]

码头工人撰写

version: '3.5'

services:

  somethinghere:
    container_name: somethinghere-client
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - '.:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports:
      - '3000:3000'
    environment:
      - NODE_ENV=development

标签: docker

解决方案


那是 docker 的缓存机制在起作用,如果 dockerfile 有微小的变化,它们可以帮助系统更快地构建。

正如您在构建输出中看到的那样,

Step 2/8 : RUN mkdir /usr/src/app
 ---> Running in 3b78051548b7
Removing intermediate container 3b78051548b7
 ---> 96e53f58ca4a

使用图像 96e53f58ca4a 创建一个图层。

通常您无需担心它们,只需使用它们,docker images您就不会看到它们。

更多阅读在这里


推荐阅读