首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在运行docker容器时自动启动服务?

如何在运行docker容器时自动启动服务?
EN

Stack Overflow用户
提问于 2014-08-05 17:53:58
回答 9查看 282.7K关注 0票数 185

我有一个在容器中安装MySQL服务器的Dockerfile,然后我像这样启动它:

代码语言:javascript
复制
sudo docker run -t -i 09d18b9a12be /bin/bash

但是MySQL服务不会自动启动,我必须手动运行(从容器中):

代码语言:javascript
复制
service mysql start

如何在运行docker容器时自动启动MySQL服务?

EN

回答 9

Stack Overflow用户

发布于 2015-08-24 17:40:36

Dockerfile中,在最后一行添加

代码语言:javascript
复制
ENTRYPOINT service ssh restart && bash

对我来说很管用

这就是结果:

代码语言:javascript
复制
root@ubuntu:/home/vagrant/docker/add# docker run -i -t ubuntu
 * Restarting OpenBSD Secure Shell server sshd   [ OK ]                                                                      
root@dccc354e422e:~# service ssh status
 * sshd is running
票数 88
EN

Stack Overflow用户

发布于 2016-12-15 03:35:42

很简单!在dockerfile的末尾添加:

代码语言:javascript
复制
ENTRYPOINT service mysql start && /bin/bash
票数 15
EN

Stack Overflow用户

发布于 2016-11-23 23:48:25

还有另一种方法,我发现它更具可读性。

假设你想要启动rabbitmq和mongodb,当你运行它的时候,你的CMD会是这样的:

代码语言:javascript
复制
CMD /etc/init.d/rabbitmq-server start && \
    /etc/init.d/mongod start

因为每个Dockerfile只能有一个CMD,所以诀窍是用&&连接所有指令,然后为每个命令使用\来开始一个新行。

如果您最终添加了其中的许多命令,我建议您将所有命令放在脚本文件中,并按照@larry-cai的建议启动它:

代码语言:javascript
复制
CMD /start.sh
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25135897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档