如何链接构builddocker集装箱?

我将我的应用程序容器链接到postgres run

 docker run --link postgres:postgres someproject/develop 

它工作正常。

但是我意识到我需要在run之前用django命令安装一些东西到数据库。 所以我需要build链接。

我怎样才能做到这一点?

--link docker build -h没有--link选项。

我从docker贡献者Brian Goff那里得到了答案:

 docker run -d --name mydb postgres docker run --rm --link mydb:db myrailsapp rake db:migrate docker run -d --name myapp --link mydb:db myrailsapp 

这将会激发postgres。 启动进行数据库迁移的容器,立即退出并删除自己。 启动rails应用程序。

考虑编译过程,比如编译应用程序。 作为编译阶段的一部分,不要将数据存入数据库。

你不可以做这个。 你可以build立一个postgres的子图像,或者每次启动容器时更新数据库。

确实,但docker build不接受 – --network选项。

您可以将必备容器放在命名/自定义networking上,例如:

 docker network create whatever docker run --network whatever --name postgres [etc.] someproject/develop 

然后build立在这个networking上:

 docker build --network whatever [etc.] 

效果很好。

我有一个类似的问题。 我想借助apt-cacher来加速图像的构build。 它运行在自己的容器中,而我build立的其他图像也不得不与之通信。

解决scheme是在所有接口上发布apt-cacher端口。 这包括例如docker0 ,它可用于在映像构build期间产生的中间容器。

示例Dockerfile

 FROM debian:8 RUN ping -c 2 172.17.0.1 

这是如何build立的:

 $ docker build - <dock Sending build context to Docker daemon 2.048 kB Step 1 : FROM debian:8 ---> 47af6ca8a14a Step 2 : RUN ping -c 2 172.17.0.1 ---> Running in 4f56ce7c7b63 PING 172.17.0.1 (172.17.0.1): 56 data bytes 64 bytes from 172.17.0.1: icmp_seq=0 ttl=64 time=0.117 ms 64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.130 ms --- 172.17.0.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.117/0.123/0.130/0.000 ms ---> 5c73a36a0a6a Removing intermediate container 4f56ce7c7b63