docker容器内服务开机自启动

时间:2024-03-20 11:01:58

容器内服务开机启动设置:两种方法

下面两种方式中nginx的启动路径可以按自己需求来写。也可以根据自己需求加入其它任意命令,如echo ip+域名 >> /etc/hosts文件中。

环境:root用户

1:在容器root目录下的.bashrc中将服务的启动命令写进该文件中并执行source .bashrc,以使之生效。

例:

docker容器内服务开机自启动

设置完成后可重启服务器进行验证。前提是已经做了docker服务和容器随服务器开机而自启动的操作。使用docker attach 进入容器,docker exec会报错,不知道为什么。

 

2:例:

1):将现有容器的/data/scripts/(路径随意写)下添加nginx的启动脚本nginx.sh,脚本内容:

#!/bin/bash

/opt/nginx/sbin/nginx

/bin/bash

2):然后将该容器提交为镜像。

3):在该镜像的基础上使用下面蓝色的一长串命令再次创建容器。由于该镜像的/data/scripts/下已经存在了nginx的启动脚本,故在执行创建新容器的时候只需要在命令的最后加上这个脚本的路径就可以成功创建并启动容器内的nginx服务了,并且会随着docker服务、容器、以及本地服务器的重启而自动启动。注:脚本内后期也可以再加入其它内容,例如ip+域名的映射写入hosts文件,重启容器后都可以生效。

docker run --name nginx2 -it -d -h www-2 --net docker-br0 --ip 172.172.1.11 -p 90:80 -p 91:81 --restart=always -v /data/www/:/data/www/ nginx:v2 /data/scripts/nginx.sh

-name  nginx2 #容器名称; -h www-2 #容器主机名;  --net  docker-br0 #自定义网卡;  -p后面为容器内nginx映射到主机的端口;  --restartalways  设置容器开机自启动;  -v后面为主机和容器的共享目录; nginx:v2为镜像名称,后面是指定的镜像内脚本路径。测试时主机名、网卡、端口、共享目录可以省略不写。 

创建成功后进入容器可以看到nginx服务已经启动成功了。使用docker attach或docker exec进入都可以。

docker容器内服务开机自启动