Docker Pull命令与Docker Build命令有何不同

时间:2018-09-20 11:11:03

标签: image docker build pull

Docker的官方文档说:

  

Docker构建-“从Dockerfile构建映像”

     

Docker pull-“从注册表中拉取映像或存储库”

以下是一个示例Dockerfile:

FROM php:7.1.8-apache

MAINTAINER XXXX

COPY . /srv/app
COPY docker/vhosts.conf /etc/apache2/sites-available/000-default.conf

WORKDIR /srv/app

RUN docker-php-ext-install mbstring pdo pdo_mysql \
    && chown -R www-data:www-data /srv/app

看来,build命令将首先从Docker集线器下载映像,然后执行docker文件中提到的其他工作。 Docker pull将仅从存储库下载映像。从某种意义上说,“拉”是“构建”的一部分。我是Docker的新手,我需要确认以了解我的知识,或者如果有更多了解,请让我知道。

2 个答案:

答案 0 :(得分:2)

从其他图像进行构建时,您的理解是正确的,但有一些例外:

  1. 如果您从scratch进行构建,则不会提取任何图像。更多信息here
  2. 如果图像已经在您的计算机上(通过以前的提取,进行构建)

答案 1 :(得分:1)

如果您有一个用于映像的Dockerfile,并且该映像也已经在某个存储库中,则docker pull将从存储库中提取该映像的二进制副本,而docker build将从该存储库中重建该映像。 Dockerfile。

一些情况也会自动为您docker pull。如果您docker run没有图像,它将被拉出;如果不存在,则Dockerfile FROM行也将提取基本映像。

在您的情况下,Dockerfile从php:7.1.8-apache映像开始描述如何构建新映像。您需要该基础映像来构建您的自定义映像,如果还没有,它将为您拉取。但是,您得到的是与该PHP基本映像不同的映像,并且除非您将docker push映像放置在某个地方,否则您将无法直接docker pull结果。