0
点赞
收藏
分享

微信扫一扫

docker容器内的attached 和detached模式

Gaaidou 2022-11-06 阅读 152


博主介绍

📢点击下列内容可跳转对应的界面,查看更多精彩内容!

🍎主页:​​水香木鱼​​
🍍专栏:​​docker​​

文章目录

简介:这是一篇有关【docker容器内的attached 和detached模式】的文章,博主用​​最精简的语言​​去表达给前端读者们。





端口映射

attached模式

detached模式

detached模式转换attached模式


1、Docker端口映射

在开启端口映射之前,你首先要之道​​Docker对应的容器端口​​是多少。比如Nginx镜像的端口诗80。

知道这个端口后,就可以在启动容器的时候,用​​-p <port:port>​​ 的形式,启用映射了。

用Nginx举例:

docker container run -p 80:80 nginx

等待项目启动后,打开浏览器窗口,在地址栏输入​​127.0.0.1​​,就可以打开nginx的默认网址。

docker容器内的attached 和detached模式_运维

  • 第一个端口是​​映射到服务器本机的端口​​;
  • 第二个端口是​​Docker容器使用的端口​​。

比如你想​​把Docker的80端口,映射到服务器的90端口​​,执行如下命令:

docker container run -p 90:80 nginx

2、attached模式

两种模式最简单的对比理解就是:attached模式在前台运行,detached模式在后台运行。

当你打开​​127.0.0.1​​​网址的时候,​​PowerShell​​上打印出了相关的日志(log),平且每访问一次,都会增加一条日志。

也就是说Docker容器的日志会实时的展现到窗口并且占用此端口。这种模式叫做​​attached模式​

docker容器内的attached 和detached模式_docker_02

在windows系统下并不是一个完整的attached模式,只是帮我们打印出了Log。

现在到Linux服务器上,这时候你按​​Ctrl+C,就会停止掉Docker服务​​。而现实中我们工作的环境恰恰是这种Linux环境。

【也就是在Linux上你的操作命令,会直接传递个Docker容器。这个缺点就是很容易误操作,比如在公司的生产环境中,你直接一个Ctrl+C,整个服务就崩掉了,你这个月的绩效也就没有了。】

所以我们需要一个更好的,更稳定的模式。也就是​​detached模式​​。

注意:​​attached模式更适用于容器和程序的调试阶段​

3、detached模式

detached模式的开启方法,就是加一个参数​​-d​​​或者​​--detach​

docker run -d -p 80:80 nginx

这次你会看到,和attached模式不同的是,这次​​输入完命令后,只显示出了容器的编号​​​,并且​​可以再输入任何命令​​。

就算我们关掉窗口,容器依然运行,也就是他是在系统后台进行运行的。

这种就比较​​适合在生产环境中运行,停掉和删除容器都需要使用Shell脚本的形式。减少了很多误操作。​

4、detached模式转换attached模式

在运行之后,也有需要调试的时候,Docker提供了两个模式间的转换。

比如​​现在要把detached模式的容器,改为attched模式​

docker  attach <ID or Image Name>

举报

相关推荐

0 条评论