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

时间:2014-04-14 18:02:39

标签: docker systemd coreos

我是Docker和CoreOS的新手。我想我对容器的概念以及它们之间的相互关系有点不清楚。

我正在尝试设置一个运行两个服务的基于CoreOS的服务器:一个自定义服务器(称之为myserver)和一个memcached服务器(只能由myserver访问)。

所以我认为我已经在CoreOS机器上安装了myserver.service文件,可以使用这样的行成功启动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中创建了一个新的memcached.service文件?如果是这样,它应该使用与自定义服务器相同的容器“my_container”吗?如果他们不使用同一个容器,myserver是否能够访问memcached服务器?

1 个答案:

答案 0 :(得分:3)

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

在这种情况下,您将拥有两个带有两个systemd单元的容器。

Memcache.service unit:

[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:

[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 的第一个容器,并以下列形式向 my_container 中提供一些变量: MEMCAHCE_PORT_11211_TCP _ ??? ,例如 MEMCAHCE_PORT_11211_TCP_HOST & MEMCAHCE_PORT_11211_TCP_PORT ,然后可以在您的程序中使用。

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

相关问题