在CoreOS的同一个Docker容器中运行两个服务?

我对Docker和CoreOS来说还挺新的。 我想我对容器的概念和它们之间的联系有点不清楚。

我试图build立一个基于CoreOS的服务器,运行两个服务:一个自定义服务器(称为myserver)和一个memcached服务器(只能由myserver访问)。

所以我想我在CoreOS机器上安装了一个myserver.service文件,可以使用这样的一行来成功启动upi myserver:

ExecStart=/bin/bash -c '/usr/bin/docker start -a my_container || /usr/bin/docker run --name my_container my-image /usr/local/bin/myserver' 

所以我的问题是,为了启动memcached服务器,是否在CoreOS中创build一个新的memcached.service文件? 如果是这样,它是否应该使用与自定义服务器相同的容器“my_container”? 如果他们不使用相同的容器,myserver是否能够访问memcached服务器?

布鲁克斯,好消息。 我有一个使用CoreOS编写的例子( https://github.com/brianredbeard/memcache-tools )。

在这种情况下,你将有两个容器与两个systemd单位。

Memcache.service单元:

 [Unit] Description=My Memcached Server Requires=docker.service After=docker.service [Service] ExecStart=/usr/bin/docker run --rm --name %n -t -i memcache 

Worker.service单位:

 [Unit] Description=My worker container Requires=Memcache.service After=Memcache.service [Service] ExecStart=/usr/bin/docker run --rm --name %n -t -i --link memcache:memcache my_container 

这将做的是拿第一个名为memcache的容器,并以下面的forms向my_container呈现一些variables: MEMCAHCE_PORT_11211_TCP _ ??? ,例如, MEMCAHCE_PORT_11211_TCP_HOSTMEMCAHCE_PORT_11211_TCP_PORT ,然后可以在您的程序内消耗。

查看转储,加载和示例脚本以及该示例中的Dockerfile和README.md。