docker设置服务自动拉起

用docker起了一个算法服务,为了避免服务意外挂掉,或者被误杀,设置了退出自动拉起,docker设置命令行如下:

sudo docker run -itd --restart=always --privileged=true --network host --runtime=nvidia --name=my_server -e DISPLAY=unix$DISPLAY -v/tmp/.X11-unix:/tmp/.X11-unix -v $HOME:$HOME --device /dev:/dev algorithm-server-cuda11-gui:v0.3 sh -c "cd /home/delia/my_server && ./my_server >log.log 2>&1"

 docker run命令使用方式如下:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

docker run必须指定一个生成容器的镜像,形式为IMAGE[:TAG|@DIGEST],我们最上面的命令中,所用的镜像名称为:algorithm-server-cuda11-gui:v0.3。

我们还可以指定若干options,用以定义生成的容器以detached或是前台方式运行、容器名称(可选,若不指定,docker会自动生成一个)、网络设置、CPU及内存的运行时限制等。

以我们最上面的命令行为例,对各项options做个简单的说明。

-itd:是 -i,-t,-d的组合。-i :以交互模式运行容器,通常与 -t 同时使用;-t:为容器分配一个伪终端,通常与-i一起使用;-d:以detached模式启动容器。

--restart=always:容器的重启策略,可选项有no, on-failure, always, unless-stopped。

默认为no,即容器退出时不重启。

on-failure是指容器在以非零状态退出时,才重启,并且可以设置最大重启次数,当重启超过设置的次数时,则不再重启,如果不设置最大重启次数,则docker会无限次地尝试重启。

always,无论退出状态为何,都会重启。

unless-stopped,无论退出状态为何,都会重启,除非容器在停止docker守护进程之前已被设置为stop状态。

--privileged=true:设置容器的扩展权限,使容器可以访问主机上的设备。

--network host:使用宿主机上的网络。其他可选项如下:

--runtime=nvidia:nvidia-docker 2.0的实现方式,好像docker 19.03以上版本开始使用--gpus all,具体尚未验证。

--name=my_server:指定的容器名称,若不指定,则守护进程会自动生成一个字符串名称。指定容器名称方便使用者对容器的管理,容器也可以使用容器ID进行管理。

-v /tmp/.X11-unix:/tmp/.X11-unix:允许docker访问x11的显示接口。

-e DISPLAY=unix$DISPLAY:图形界面的显示设置,结合上面一项X11的授权,允许图形界面像在宿主机本地一样显示。

-v $HOME:$HOME:路径映射,做这样的映射后,在docker中看到的路径与宿主机上的路径一致。

--device /dev:/dev:指定docker能访问的宿主机device,其实前面已经指定了--privileged=true,该项可以不设置,若没有设置--privileged=true,又希望docker能访问宿主机上的device,则该项必须设置。

sh -c  "cd /home/delia/my_server && ./my_server >log.log 2>&1":sh -c 可以将一个字符串作为完整命令来执行,该语句的作用是进入到目录/home/delia/my_server,并以后台形式执行该目录下的可执行文件my_server,同时将打印信息输出到log.log。

参考:

Docker docs: https://docs.docker.com/engine/reference/run/

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值