在debian / ubuntu启动时启动redis-server

时间:2015-09-01 15:01:01

标签: redis docker debian startup

我正在尝试创建一个docker容器,redis在启动时启动。 将在其他容器上运行其他前台服务,该容器将连接到redis db。

由于某种原因,当我运行容器时服务没有启动。 这里是我简化的Dockerfile

FROM debian

# this solves an issue described here:
# http://askubuntu.com/questions/365911/why-the-services-do-not-start-at-installation
RUN sed -i -e s/101/0/g /usr/sbin/policy-rc.d

# install redis-server
RUN apt-get update && apt-get install -y redis-server

# updates init script (redundant)
RUN update-rc.d redis-server defaults 

# ping google to keep the container running in foreground
CMD ["ping", "google.com"]

任何人都可以解释为什么这不起作用以及如何做到这一点?

1 个答案:

答案 0 :(得分:2)

所以docker容器就像一个完整的操作系统,但有一些关键的区别。它不会运行完整的初始化系统。它的设计和目的是运行单个进程树。虽然你可以在一个容器中运行一个诸如runit et al之类的主管,但你真的正在对付码头的粒度,所有的工具和文档都将导致你不再使用像VM这样的容器,而是使用1个进程/服务的协调每个容器。

所以redis没有启动,因为ping命令实际上是容器中运行的唯一进程。

  

将在另一个容器上运行其他前台服务,该容器将连接到redis db。

不要这样做。真。当您在每个容器中放入1个进程并通过网络链接连接它们时,一切都会变得更容易。