欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-03-19 14:57:28
首先想说的是写这篇文章的初衷完全是因为下面这篇文章:<<——方法: 1.需要在docker中添加一个启动服务脚本auto_service.sh 注意:上面三行都是必须的。 #!/bin/sh 告诉linux应该使用什么指令运行dj此脚本。我用的是官方发布的centos7的docker。 /bin/serviceA start #启动服务A的指令,根据需要自行修改 /bi......

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

<<——方法:
        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服务是否已经启动

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

我们看到进入容器后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