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 ...
随机推荐
- 【已解决】使用 yarn 安装时,报错node_modules\node sass:Command failed.
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org npm install node-sass y ...
- Ionic 使用 NFC
Ionic 使用 NFC 哎哟喂,因为项目需要使用 Ionic 调用手机 NFC 功能,踩了好多坑,真的是,不过终于不负众望拿到了id.现在就记录一下我的步骤和踩过的坑! 步骤 我装的Ionic可能是 ...
- numpy小结(一)
1.np.zero(10) 创建一个包含10个元素的一维数组 np.ones((10,10)) 创建一个包含10*10个元素1的二维数组 2.np.arange(10,50) ...
- 搭建 Review Board - SVN 审核工具
一.安装环境 CentOS-6.7,ReviewBoard-2.5.1.1 二.安装环境的配置 1.确认当前系统中有如下包,若没有,使用yum安装 httpd-2.2.15:httpd 指的是apac ...
- C编译过程
system()调用系统命令 C语言源代码——> 预编译(1.去掉注释:2.包含文件)——> gcc -o a.o a.c 编译(编译成二进制质量)——> 链接系统库函数——> ...
- hadoop搭建HA集群之后不能自动切换namenode
在搭好HA集群之后,想测试一下集群的高可用性,于是先把active的namenode给停掉: hadoop-daemon.sh stop namenode 或者直接kill掉该节点namenode的对 ...
- 杭电oj 2098——分拆素数和(包含如何判断质数及优化),java实现
question:分拆素数和 思路: 1.首先从1一直遍历到数据的1/2位置(因为后面的会和前面的重复),因为是要两个数,所以另一个数就是原数据减去遍历的数字(即i 和data-i),如果二者同时为质 ...
- 完整安装IIS服务
此文主要是针对前面提到的 IIS支持json.geojson文件 添加脚本映射时,提示找不到asp.dll时的解决方法. 主要参考了此文:http://www.kodyaz.com/articles/ ...
- vue组件引入
/src/route/index.js import Demo2 from '@/pages/demo2/index.vue' { path : '/demo2', name : 'demo2', c ...
- JS高级---作用域,作用域链和预解析
作用域,作用域链和预解析 变量---->局部变量和全局变量, 作用域: 就是变量的使用范围 局部作用域和全局作用域 js中没有块级作用域---一对括号中定义的变量,这个变量可以在大括 ...