发布时间:2020-03-08 14:55:08来源:阅读:
当你逐渐了解docker后,你会开始考虑docker的其它用例,第一个首先是运行服务一样运行docker。
你想作为一个服务在后台运行docker.
docker run命令使用-d参数,和使用与容器管理相关的参数来定义服务特性。
Docker容器 – 像大多数进程 – 默认在前台运行。在后台运行docker容器最常见的方式是使用&控制操作符。即使这个可行,不过当你的日志输出到终端会话时可能会遇到麻烦,或者你使用nohup命令,它会当前目录创建一个日志输出文件,不过增加了一个日志管理的问题。而docker提供有在后台运行的功能,如:
$ docker run -d -i -p 1234:1234 --name daemon ubuntu nc -l 1234
当docker run命令使用-d参数时,docker会以守护进程运行。-i参数使你能够与Telnet会话交互。-p参数使容器的1234端口绑定到主机。–name参数设置容器一个名称方便以后引用。最后,运行了一个监听在1234端口的echo服务器。
如果你现在连接并使用telnet发送消息,你使用docker logs命令会看到容器已经接收到消息,如图:
你看到以守护进程运行容器足够简单,但操作上仍有一些问题需要回答:
* 服务失败时会怎样?
* 服务终止时会怎样?
* 如果服务持续故障会怎样?
幸运地是docker为每个问题提供了参数!
虽然restart参数经常与-d参数一起使用,但技术上来说这不是必要的。
docker run –restart命令允许容器终止时应用一系列的规则(也称重启策略)。
重启策略可选值:
no – 容器退出时不重启
always – 容器退出时始终重启
on-failure[:max-retry] – 只在发生错误时重启
no策略很简单:当容器退出时,不重启容器。这个是默认值。
always也同样简单,不过值得简单介绍下:
$ docker run -d --restart=always ubuntu echo done
此命令以守护进程运行容器,并在进程终止时始终重启容器(–restart=always)。执行了一个快速完成的echo命令,然后退出容器。
如果你执行以上命令然后执行docker ps命令,会看到类似的输出:
注意STATUS列告诉我们容器少于一秒前退出,正在重启。这是因为echo done命令立即退出了,docker就必须持续地重启容器。
最后on-failure策略只在容器以非0(非正常失败)状态码退出时重启:
$ docker run -d --restart=on-failure:10 ubuntu /bin/false
此命令以守护进程运行(-d)和对尝试重启设置一个限制值(–restart=on-failure:10),超过此次数时不再重启。它运行一个简单的命令(/bin/false),会快速完成且肯定会失败。
如果你执行以上命令,等一分钟后执行docker ps -a,你会看到类似的输出:
2020-05-21
NFS常见错误
会声会影安装时出现Error 1402
9个常用iptables配置实例
联想支持Win10 2018年4月更新(RS4版本1803)的机型
使用暴风影音如何购买付费点播影片
电脑他提示“INTERNAL_POWER_ERROR (a0) ……”
荐212:「异形侵略战2.5」——大战外星丧尸的射击类3D单机手游
USB鼠标无法使用的解决思路
Fn+F5不显示无线网卡开关界面