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 ...
随机推荐
- MongoDB,使用C#实现2d地理位置检索
这两天在研究mongoDB,从零开始接触它,为什么要研究它呢,因为它支持2d地图索引,而且速度非常快,可以用它来做类似微信的(摇一摇功能),不过网上很难搜到.net操作的,而且就算搜索到了也不能用,也 ...
- [Arc083D/At3535] Restoring Road Network - 最短路,结论
[Arc083D/At3535] 有 \(N\) 个城市,城市与城市之间用长度为整数的无向道路连接. 现有一考古学家找到了一张 \(N×N\) 的表 \(A\) ,这张表代表了这 \(N\) 座城市两 ...
- gflag的简单入门demo
gflags 一. 下载与安装 这里直接使用包管理器安装: sudo apt install libgflags-dev 二. gflags的简单使用 1. 定义需要的类型 格式: DEFINE_类型 ...
- Android开发之JDK配置,及ADT下载
第一步: 到官网上下载jdk,记住关键的一点,首先要查看自己的windows电脑是32位的还是64位的,这里想下载相应的位数的jdk 第二步: 安装JDK,一般默认安装路径,不做自己修改安装路径,如: ...
- numpy Array[:,]的取值方法
- python中os.sep的作用以及sys._getframe().f_back.f_code.co_xxx的含义
https://blog.csdn.net/gufenchen/article/details/98338552
- Cannot find module 'less-bundle-promise'
Error: Cannot find module 'less-bundle-promise' 解决办法 :npm install less-bundle-promise --save
- 杭电oj————2057(java)
question:A+ B again 思路:额,没啥思路/捂脸,用java的long包里的方法,很简单,只是有几次WA,有几点要注意一下 注意:如果数字有加号要删除掉,这里用到了正则表达式“\\+” ...
- mysql内核测试&原理学习
参考资料:https://www.cnblogs.com/f-ck-need-u/p/9001061.html#blog5
- SQL Server经典sql语句大全(转)
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...