Docker - 容器的 连接 与 退出
概述
- 连接容器, 退出容器
命令
- run
- exec
- attach
- 退出
选项
- -i
- -t
- -d
1. docker run
概述
- docker run 通常用来创建新容器
- docker run 的 三个命令行选项
ref
命令行选项 相关的实验
准备
基础命令
# 下面这个, 是 基础命令
# 后面的 命令行选项, 会按照这个模式插入
> docker run ubuntu:18.04
尝试
没有选项
- 表现
- 当场暴毙
- 表现
只有 -i
- 表现
- 可以交互
- 但是终端好像出了问题, 命令执行结果看不到
- 表现
只有 -d
- 表现
- 当场暴毙
- 表现
只有 -t
- 表现
- 不会暴毙
- 但是输入什么都没反应
- 只有退出
- 表现
-it
- 表现
- 正确进入容器
- 命令可以执行
- 结果正确显示
- 表现
-dt
- 表现
- 容器正常启动
- 容器为 运行状态
- 表现
结论
- 正常使用的话
- 需要 i 或者 d 的配合
- -it
- 交互式
- -dt
- 后台式
- -it
- 需要 i 或者 d 的配合
- 其他说明
- 这个结论, 只适合 ubuntu 的镜像
- ubuntu 镜像的 cmd 语句, 执行的命令, 是 /bin/bash
- /bin/bash 不是那种可以后台执行的命令
- redis 或者 nginx 的镜像, 直接 -d 没有问题
- ubuntu 镜像的 cmd 语句, 执行的命令, 是 /bin/bash
- 其他镜像, 需要灵活结合 cmd 和 entrypoint 分析
- 一般情况下, 前台用 -it, 后台用 -d 即可
- 这个结论, 只适合 ubuntu 的镜像
- 正常使用的话
2. docker: run, exec, attach
概述
- 这三个命令的区别
ref
区别
run
概述
- 在一个 新容器 里执行命令
常见模式
> docker run -it <image> <cmd>
> docker run -dt <image> <cmd>
exec
概述
- 在 已经存在 的容器里, 执行命令
常见模式
> docker exec -it <image> <cmd>
attach
概述
- 连接 已经存在 的容器
常见模式
> docker attach <image>
问题
尝试发现, 对 -d 容器不太好使
- 可以进入
- 但是 输入命令, 无法执行
网上有说, 同一容器被用户 attach 的时候, 会出现阻塞
- 没有验证
结论
- attach 可以放弃不用
3. 退出容器
概述
- 从容器中退出
退出方式
- exit
- ctrl + q + p
1. exit
概述
- Linux命令行 最常见的退出方式
操作
- 这个简单, 我就不再多说了
问题
- run -it
问题
- 用 run -it 命令启动, 并连接了容器
- 直接输入 exit, 会让容器变为 exit 状态
其他
- 使用 run -dt 启动的容器
- 如果用 exec -it 连接, 再 exit 退出
- 容器不会关闭
- 如果用 exec -it 连接, 再 exit 退出
- 使用 run -dt 启动的容器
- run -it
2. ctrl + q + p
概述
- 应对 run -it 启动容器的退出问题
操作
- run -it 启动容器
- ctrl + q + p 退出
结果
- 正常退出
- 容器依然是 up 状态
3. 建议
建议使用 run -dt 命令启动容器
- 概述
- 使用 run -dt 命令
- 启动成功后, 用 exec -it 连接
- 如果要退出的话, 直接 exit 也没有问题
- 概述
如果需要用 run -it 命令启动
- 概述
- 启动后, 需要用 ctrl + q + p 退出
- 保证容器不变为 exit 状态
- 启动后, 需要用 ctrl + q + p 退出
- 概述
ps
伪终端
- 大概认识, 现在通过 windows 连接 linux 的命令行, 基本都是伪终端
- 但是为啥要这么叫, 怎么来的, 我之前看过, 但是现在记不住了...
其他
- docker 镜像的基础知识
- 有的容器, 启动后不需要命令, 也不会挂, 这其中是什么原理
- 比如 nginx 的容器
Docker - 容器的 连接 与 退出的更多相关文章
- [转帖]docker容器保持运行不退出
docker容器保持运行不退出 2019年01月20日 23:21:22 chvalrous 阅读数 1511 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- [笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法
Docker容器之间的连接可以带来不少方便,下面记录下如何在自己容器内通过环境变量连接与之连接的Redis容器的方法. 先起一个Redis的Docker容器,命名为 redis,再起一个自己的Dock ...
- Docker容器内连接宿主机即CentOS的Mysql服务器
docker的宿主机是虚拟机下的CentOS 博主最近遇到一种情况,从服务器拷贝了一份数据库在宿主机Mysql服务器上,想要用本地的数据库测试自己的代码正确性,但是项目程序都是靠docker一键部署的 ...
- 解决netcore在docker容器中连接oracle报错(timezone region not found)
错误提示: timezone region not found错误原因:docker 容器内时区不是 CST 导致解决办法:1.在dockerfile 中增加一下命令ENV TZ=Asia/Shang ...
- docker 容器启动后立马退出的解决方法
原因: 容器同时只能管理一个进程,如果这个进程结束了容器就退出了,但是不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须要有一个进程在前台执行. 解决方案: 启动脚本最后一 ...
- 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- docker容器的学习笔记
目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...
- Docker 容器技术
前言: 之前感觉Docker是一种小虚拟机,docker和KVM虚拟机之间有什么区别.联系.可以应用在什么样的生产环境? 一.Docker是什么以及和KVM的区别 1.docker概念? Docker ...
- Docker容器的启动与停止
启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看d ...
随机推荐
- nginx反向代理https访问502, nginx反向代理, 支持SNI的https回源,SNI源点,nginx反向代理报错
正常nginx配置了SSL是可以通过HTTPS访问后端的,但是对有配置SNI + https后端的支持有点麻烦. 编译安装nginx后,看一下是否支持SNI /usr/local/nginx/sbin ...
- PP: A dual-stage attention-based recurrent neural network for time series prediction
Problem: time series prediction The nonlinear autoregressive exogenous model: The Nonlinear autoregr ...
- 常用phpstorm快捷键
欢迎提交你经常使用的快捷键 ctrl+j 插入活动代码提示 ctrl+alt+t 当前位置插入环绕代码 alt+insert 生成代码菜单 ctrl+q 查看代码注释 ctrl+d 复制当前行 ctr ...
- vue 报错碰到的一些问题及其规范
报错信息:Expected error to be handled(需要处理的错误) 这是因为回调函数里面的参数error没有运用到,所以可以不设置参数,或者在回调函数内console.log(err ...
- vue 中的路由为什么 采用 hash 路由模式,而不是href超链接模式(Hypertext,Reference)?
1. vue中路由模式的种类有两种 1. 一种是 hash 模式. 2. 一种是 h5 的 history 模式. 2. hash 和 history 都是来自 bom 对象 bom 来自 windo ...
- jdk8-》joining、groupingBy、summarizingInt函数
拼接函数 Collectors.joining // 3种重载方法 Collectors.joining() Collectors.joining("拼接符") Collector ...
- Python入门5 —— 基本运算符
1.算数运算符('+'.'-'.'*'.'/'.'//'.'%'.'**') print(10 + 3) -- 输出:13 print(10 - 3) -- 输出:7 print(10 * 3) -- ...
- 动图演示23个鲜为人知的VSCode快捷键
动图演示23个鲜为人知的VSCode快捷键 原文地址:dev.to/devmount/23… 代码同步浏览器 安装vccode 安装live server插件 尽管我在VS Code中经常使用许多快捷 ...
- C++-怎样写程序(面向对象)
使用编程语言写好程序是有技巧的. 主要编程技术: 1. 编程风格 2. 算法 3. 数据结构 4. 设计模式 5. 开发方法 编程风格指的是编程的细节,比如变量名的选择方法.函数的写法等. 算法是解决 ...
- 微信小程序前台的用户数据入库(后台Laravel)
首先 我们可以看到微信小程序官方 文档 wx.login api-login.jpg 通过此图 我们知道 前台要传 一个 code给后台,后台拿到code 并结合appid和appsecret请求 ...