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

我正在尝试创build一个docker容器,其中redis在启动时启动。 将会有其他的前台服务在另一个容器上运行,它将连接到redis数据库。

由于某种原因,我运行容器时服务不启动。 这里是我简化的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 -es/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"] 

有人可以解释为什么这不起作用,这应该怎么做对吗?

所以docker集装箱就像一个完整的操作系统,但有一些关键的区别。 它不会运行一个完整的init系统。 它的devise目的是为了运行一个进程树。 虽然你可以在一个容器中运行诸如runit等人的主pipe,但是你实际上正在对付docker的工作,所有的工具和文档都将使你远离使用虚拟机这样的容器,并且走向一个过程/服务的和谐每个容器。

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

将会有其他的前台服务在另一个容器上运行,它将连接到redis数据库。

不要这样做。 真。 在每个容器中放置一个进程并通过networking连接进行连接时,一切都将变得更加简单。