docker容器内服务随容器自启动
首先想说的是写这篇文章的初衷完全是因为下面这篇文章:
<<——方法:
1.需要在docker中添加一个启动服务脚本auto_service.sh
注意:上面三行都是必须的。
#!/bin/sh 告诉linux应该使用什么指令运行dj此脚本。我用的是官方发布的centos7的docker。
/bin/serviceA start #启动服务A的指令,根据需要自行修改
/bin/bash 保留一个终端,这句是必要的。否则在服务A执行完成后容器就会自动退出了。
注意:上面三行都是必须的。
2.将有auto_service.sh的容器打包为镜像
3.运行
docker run -d -t -v /etc/localtime:/etc/localtime --name service_A imageX /home/auto_service.sh
注意,最后要把自行启动的脚本加上——>>
这篇文章不知道是谁写的,也不知道他能不能通过这种方式来实现他想做的。反正是被无数人引用的最多的一篇文章,也不管写的对不对就往外发(个人一直认为写博客不只是给自己看的,同时也是给其它有需求的人看的,不负责任的乱写只会误导他人)不知道这些人到底图个什么??? 对于这种风气,略感悲哀。
下面是我要写的,其实也是在网上找到的命令,只是很难通过常用的关键字来搜索到这种方法(其实就是在本地主机执行容器内的命令)。所以干脆自己再写一下,以便于有需要的朋友搜索到。其实很简单,在你的本地主机中写一个很简单的脚本就可以了。
#!/bin/bash
/usr/bin/docker start nginx-1
/usr/bin/docker exec -it nginx /bin/bash -c '/opt/nginx/sbin/nginx'
第一条命令:启动容器nginx-1(此处省略容器的创建方式);
第二条命令:后台进入nginx-1容器后执行nginx服务的启动命令:/opt/nginx/sbin/nginx。-c是关键,没有-c的话就无法在本地主机执行容器中的服务启动命令。
执行完毕后可进入容器查看nginx服务是否已经启动
我们看到进入容器后nginx服务已经启动,对应的端口也可以看到。
其实也还可以这样写,直接将两条命令连起来写就OK了,不用写脚本。
docker start nginx && docker exec -it nginx /bin/bash -c '/opt/nginx/sbin/nginx'
本文地址:https://blog.csdn.net/sinat_35555240/article/details/107317438