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 ...
随机推荐
- requests-验证码登录
ModuleNotFoundError: No module named 'bs4': 解决方法:pip install beautifulsoup4 https://blog.csdn.net/wi ...
- Wannafly Camp 2020 Day 6F 图与三角形 - 图论
把黑边视为无边,那么答案之和每个点的度数有关 #include <bits/stdc++.h> using namespace std; #define int long long int ...
- TD - 输入框
模板1:TD - 普通输入框 <input dojoType="bootstrap.form.ValidationTextBox" dojoAttachPoint=" ...
- [Note]prufer
[Note]Prufer编码 实现 不断删除度数为\(1\)的最小序号的点,并输出与其相连的节点的序号,直至树中只有两个节点. 性质 任何一棵\(n\)节点的树都可以唯一的用长度为\(n-2\)的pr ...
- Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名
Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名 #编码类型 #-*- coding: UTF-8 -*- #导入包 import os import shutil srcpath ...
- 为QT应用程序添加图标 转
第1,第2种方法经本人验证可行 1:通过qmake生成makefile实现过程: (1) 找到一张图片.ico,名字改为myappico.ico: (2) 创建一个新的文本文档,内部添加 IDI_I ...
- maven构建错误 RSA premaster secret error: SunTls12RsaPremasterSecret KeyGenerator not available
转载地址:https://blog.csdn.net/daydayuptiantian/article/details/78763035 错误信息前面显示的是:Failed to execute go ...
- Python之路Day01
一.Python简介 Python的历史 Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生 In November 2014, it was ...
- Allegro 反射仿真--仿真设置
一.打开BRD文件 打开PCB SI,启动Cadence Product Choices界面,如图1-1所示,一般我们选择Allegro PCB SI 630(SPECCTRAQuest),具体如下图 ...
- Hibernate:对象关系映射(一对一,一对多,多对一,多对多)
如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配 ...