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的新手,我需要确认以了解我的知识,或者如果有更多了解,请让我知道。
答案 0 :(得分:2)
从其他图像进行构建时,您的理解是正确的,但有一些例外:
scratch
进行构建,则不会提取任何图像。更多信息here。答案 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
结果。