当前位置: 移动技术网 > 网络运营>服务器>Linux > docker容器内服务随容器自启动

docker容器内服务随容器自启动

2020年07月15日  | 移动技术网网络运营  | 我要评论

首先想说的是写这篇文章的初衷完全是因为下面这篇文章:

<<——方法:
        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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网