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 ...
随机推荐
- jdk1.8的HashMap和ConcurrentHashMap
原文地址:https://my.oschina.net/pingpangkuangmo/blog/817973 本文针对jdk1.8的ConcurrentHashMap 1 1.8的HashMap设计 ...
- [HAOI2011] Problem b - 莫比乌斯反演
复习一下莫比乌斯反演 首先很显然用一下容斥把它转化成求 \(ans=\sum_{i=1}^a \sum_{j=1}^b [{gcd(i,j)=d}]\) 我们可以定义 f(d) 和 F(d) 如下: ...
- Spring Boot整合Freemarker
一.首先导入依赖 <!-- 添加freemarker模版的依赖 --> <dependency> <groupId>org.springframework. ...
- 2个月,我从编程小白成为了Python研发工程师
从编程小白,到Python研发工程师,需要多久呢? 答案就是:91门课,450个小时. 听起来似乎难以实现,但其实如果每天抽出八小时学习,两个月的时间,就能由编程小白转变成为Python工程师,听起来 ...
- 4817 [Sdoi2017]树点涂色
题目描述 Bob 有一棵 n 个点的有根树,其中 1 号点是根节点.Bob 在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
- 在cc.EventListener.TOUCH_ONE_BY_ONE事件中判断拖动物离哪边近飞向那边
需将拖动物坐标和要飞向物坐标转化为整个layer的坐标,因为人们判断远近是根据整个layer来看的.
- Java Set集合的详解
一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复. 对象的相等性 引用到堆上同一个对象 ...
- Ubuntu18.04 一条命令安装caffe问题
由于caffe安装坑很多,而且caffe框架很久不更新了,微调对框架影响不大,所以对与ubuntu18.04在caffe官网提供了一条命令安装,避免很多踩坑痛苦. CPU的一条命令安装: sudo a ...
- opencv-python常用接口
最直接的是参考官网:https://docs.opencv.org/4.2.0/d6/d00/tutorial_py_root.html
- protel99se无法添加库的解决方法
protel99se是很老也很实用的的一门电类专业需要用到的软件,开发时面向XP,对于win7来说存在一定的不兼容性,导致无法添加新的库,本经验为此介绍解决方法.最全,末尾解决win7 32bit 6 ...