Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在debian/ubuntu启动时启动redis服务器_Redis_Docker_Debian_Startup - Fatal编程技术网

在debian/ubuntu启动时启动redis服务器

在debian/ubuntu启动时启动redis服务器,redis,docker,debian,startup,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

我正在尝试创建一个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"]
有谁能解释一下为什么这不起作用,以及应该如何正确操作吗?

所以docker容器就像一个完整的操作系统,但有一些关键的区别。它不会运行完整的初始化系统。它旨在运行单个进程树。虽然您可以在一个容器中运行一个主管,如runit等,但实际上您的工作与docker的工作格格不入,所有工具和文档都将引导您远离使用VMs之类的容器,走向每个容器一个进程/服务的和谐

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

将有其他前台服务运行在连接到redis db的其他容器上


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

为什么不使用Docker Hub的redis映像呢?至少看看它,了解它是如何工作的。但问题是你永远不会启动redis服务器…因为我需要在容器上运行其他东西。redis应该只是一个后台服务。根据我的理解,如果我将redis作为一个服务添加到启动时运行,它应该在启动时启动。脚本位于
/etc/rc2.d
中,并链接到
/etc/init.d/redis server
,如果我手动运行它,它可以正常工作。如果您希望一个进程永远坐在前台,在将来,尝试类似于
cat
的方法,而不是无缘无故地通过互联网向第三方发送连续的ping流。我明白了,我明白你的意思,但这就是为什么我希望只在一个容器上运行它,而不是将应用程序的每一位作为单独的容器。这个redis过程不会有多大用处,对我来说,仅仅为redis启动一个单独的容器是有点浪费的。浪费是很有争议的。集装箱很便宜——在成本上与流程非常相似。但在任何情况下,“使用像mini-VMs这样的容器”阵营都是由Phusion的人领导的,所以请在这里查找关于在容器中运行流程主管的文档:我在joyent triton上运行我的容器,所以便宜是一个$amount,而不是资源问题。无论如何,我找到了一个简单的方法来做我需要做的事情。我来看看链接。谢谢