attached和detached模式
attached和detached模式
--Docker的两种运行模式
最简单的对比理解就是:attached模式在前台运行,detached模式在后台运行。
端口映射
# 开启映射之前要知道Docker对应的容器端口是多少,比如Nginx镜像的端口是80,在启动容器的时候用-p<port:port>的形式启动映射。
docker container run -p 80:80 nginx
# 第一个端口是映射到服务器本机的端口,第二个端口是Docker容器使用的端口。
# 例:把Docker的80端口映射到服务器的90端口
docker container run -p 90:80 nginx
attached模式
访问127.0.0.1网址的时候,每访问一次,命令窗口就会打印一次log日志。也就是说Docker容器的日志会实时的展现到窗口并且占用此端口,这种模式叫做attached模式。
如果是在Linux服务器上,这时候按Ctrl+C,就会停止掉Docker服务,很容易误操作。
所以需要一个更好的,更稳定的模式。也就是detached模式。attached模式更适用于容器和程序的调试阶段。
detached模式
# detached模式的开启方法,就是加一个参数-d或者--detach。
docker run -d -p 80:80 nginx
# 独立模式是在后台运行的,启动后只现实容器编号,并且可以输入任何命令。就算关掉窗口依然继续运行,停止和删除容器都需要使用shell脚本命令,减少了很多的误操作。
detached模式下查看logs
# 首先我们用detached模式开启一个nginx服务,映射到80端口
docker container run -d -p 80:80 nginx
# 查看后台日志
docker container logs <ID or Image name>
# 输入完命令打开浏览器,在地址栏输入127.0.0.1,在日志窗口就可以跟踪到最新日志
# 但此时的日志窗口只打印一次,想动态的跟踪日志,可以在命令上加一个-f
docker container logs -f <ID or Image name>
# 关闭日志跟踪模式,直接快捷键Ctrl+C 就可以结束
detached模式转换attached模式
# 现在是detached模式,转换成attached模式
docker attach <ID or Image Name>