是否可以为具有相同配置的多个容器创建公共dockerfile?

是否可以为具有相同配置的多个容器创建公共dockerfile?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,让我们举一个例子: Dockerfile for container1 : FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y php5 php5-mysql Dockerfile for container2 : FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y php5 php5-mysql php5-dev php5-gd php5-memca

让我们举一个例子:

Dockerfile for container1 : 

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

Dockerfile for container2 : 

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql php5-dev php5-gd php5-memcache 
php5-pspell
所以要避免,

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

由于这两个Dockerfile中的配置相同。

请查看多级版本:

你的例子是:

FROM ubuntu:14.04 as image1
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

FROM image1 as image2
RUN apt-get install -y php5-dev php5-gd php5-memcache php5-pspell

您的build命令需要使用
--target
标志指定生成目标。

从image1作为image2此语句获取image1的所有内容。如果我只想要其中的一部分呢?就像我不想要image1中的php5 mysql,那么它会是什么样子呢。正如你在image1中所说的image2,但它也需要php5 mysql,我不希望这样。使用相同的策略,你可以让第一个映像只包含基本依赖项,并用两个
FROM
指令扩展它。您也可以在第二张图片中
apt获得remove php5 mysql-y
。如果我们以上面的示例为例,container1 dockerfile的build命令是:docker build-t multibuild1。container2dockerfile的build命令是:docker build-t multibuild2——target image2。正确的?这会导致错误拉取访问被拒绝,因为multibuild、存储库不存在或可能需要“docker login”,并且我已经使用上面的示例运行了您发布的确切命令,它们都运行良好。您是否对示例进行了任何修改?