0

我对 Docker 和 CoreOS 有点陌生。我想我对容器的概念以及它们之间的关系有点不清楚。

我正在尝试设置一个基于 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 中创建一个新的 memcached.service 文件?如果是这样,它是否应该使用与自定义服务器相同的容器“my_container”?如果他们不使用同一个容器,myserver 是否能够访问 memcached 服务器?

4

1 回答 1

3

布鲁克斯,好消息。我有一个使用 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的容器,并将一些变量以如下形式呈现到my_container中: MEMCAHCE_PORT_11211_TCP_??? ,例如MEMCAHCE_PORT_11211_TCP_HOSTMEMCAHCE_PORT_11211_TCP_PORT然后可以在您的程序中使用。

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

于 2014-04-14T18:44:15.190 回答