我是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服务器?
答案 0 :(得分:3)
在这种情况下,您将拥有两个带有两个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。