Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.5k views
in Technique[技术] by (71.8m points)

我通过docker在ubuntu镜像的基础上创建了一个新的镜像,如何在每次启动该容器的时候自动启动里面的服务呢?

我在docker里在ubuntu(18.04版本)镜像的基础上安装了nginx,mysql,php,创建了一个新的镜像,请问如何在每次启动该容器的时候自动启动里面的服务呢?

现在的状况是我每次以下面的命令进去:

docker run -it -p 8009:80 -v /home/yhm:/var/www/html myserver:1.13 /bin/bash

进去后我还得一个一个手动的启动各个服务,请问如何配置才能让我一进去这些服务就自启动了呢?我按网上说的在 /etc/rc.local里面加上了(并且该文件对所有用户也都加上了可执行权限):

service nginx start
service mysql start
service php7.4-fpm start

但是不起作用

我是刚开始学习docker的菜鸟,目前这个新镜像不是通过dockerfile创建的,是通过在容器里面改东西然后commit创建出来的,所以各位大神不要回答说在dockerfile里面执行啥命令哈,谢谢了。

我想的是容器启动的时候在ubuntu系统的哪个目录里面放个脚本启动自己需要的服务,不知道行不行?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

额, 首先啊,不清楚你的 ubuntu 是啥版本的. 怎么还在用 service 命令启动服务呢?你用的是比较老的版本么? 我记得好几年前的 ubuntu 都已经是 systemd了.启动服务应该是 systemctl start ...了. 另外.不管是 systemd 还是 init.d ,你想通过这个命令启动服务,你要安装对应的服务启停脚本啊. deb 大部分会自动安装这个服务脚本,你要要验证下这个命令能不能启动啊..

然后才是开机运行的,有好几种方式可以设置, 首先 在服务里设置开机启动, systemctl enable ..., init.d 的我忘记是啥了. 或者 /etc/rc.d/rc.local 或者在 crontab 里使用 @reboot ...... 等方式都可以,前提是你的脚本真的能启动服务..


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...