一、容器简介

容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。 容器具备一定的生命周期。 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。

二、容器与虚拟机

Docker容器与虚拟机相同点

容器和虚拟机一样,都会对物理硬件资源进行共享使用。

容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等)。

容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。也就是说,在容器中的操作,如同在一个虚拟机(操作系统)中操作一样。

同虚拟机一样,容器创建后,会存储在宿主机上:linux上位于/var/lib/docker/containers下

Docker容器与虚拟机不同点

注意:容器并不是虚拟机,但它们有很多相似的地方

虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上以一系列进程的结合。

容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、Guest OS),虚拟机额外更多的性能消耗;其次创建、启动或关闭容器,如同创建、启动或者关闭进程那么轻松,而创建、启动、关闭一个操作系统就没那么方便了。

也因此,意味着在给定的硬件上能运行更多数量的容器,甚至可以直接把Docker运行在虚拟机上。

                

三、容器的生命周期

虚拟机的生命周期

容器的生命周期

四、容器的生命周期管理

容器创建 – docker create

作用:     利用镜像创建出一个Created 状态的待启动容器

命令格式:     docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

命令参数(OPTIONS):-t, --tty                   分配一个伪TTY,也就是分配虚拟终端

-i, --interactive        即使没有连接,也要保持STDIN打开

--name                  为容器起名,如果没有指定将会随机产生一个名称

命令参数(COMMAND\ARG):     COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令     ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等

命令演示:

容器启动 – docker start

作用:     将一个或多个处于创建状态或关闭状态的容器启动起来

命令格式:     docker start [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):     -a, --attach        将当前shell的 STDOUT/STDERR 连接到容器上

-i, --interactive        将当前shell的 STDIN连接到容器上

命令演示:

docker run 与 docker create + docker start

docker run 相当于 docker create + docker start –a       前台模式

docker run -d 相当于 docker create + docker start       后台模式

容器暂停 – docker pause

作用:     暂停一个或多个处于运行状态的容器

命令格式:     docker pause CONTAINER [CONTAINER...]

命令参数(OPTIONS):     无

命令演示:

容器取消暂停 – docker unpause

作用:     取消一个或多个处于暂停状态的容器,恢复运行

命令格式:     docker unpause CONTAINER [CONTAINER...]

命令参数(OPTIONS):     无

命令演示:

容器关闭 – docker stop

作用:     关闭一个或多个处于暂停状态或者运行状态的容器

命令格式:     docker stop [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):     -t, --time int           关闭前,等待的时间,单位秒(默认 10s)

命令演示:

容器终止 – docker kill

作用:     强制并立即关闭一个或多个处于暂停状态或者运行状态的容器

命令格式:     docker kill [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):     -s, --signal string       指定发送给容器的关闭信号 (默认“KILL”信号)

命令演示:

docker stop和docker kill的区别

前提知识点:

Linux其中两种终止进程的信号是:SIGTERM和SIGKILL

SIGKILL信号:无条件终止进程信号。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。

SIGTERM信号:程序终结信号,可以由kill命令产生。与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。

docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。

docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。

因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。

此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。

容器重启 – docker restart

作用:     重启一个或多个处于运行状态、暂停状态、关闭状态或者新建状态的容器     该命令相当于stop和start命令的结合

命令格式:     docker restart [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):      -t, --time int           重启前,等待的时间,单位秒(默认 10s)                 实则是关闭前等待的时间

容器删除 – docker container rm

作用:     删除一个或多个容器

命令格式:     docker container rm [OPTIONS] CONTAINER [CONTAINER...]       或者 docker rm [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):      -f, --force             强行删除容器(会使用 SIGKILL信号)

-v, --volumes           同时删除绑定在容器上的数据卷

命令演示:

五、容器信息查看

容器详细信息 – docker container inspect

作用:     查看本地一个或多个容器的详细信息

命令格式:     docker container inspect [OPTIONS] CONTAINER [CONTAINER...]       或者 docker inspect [OPTIONS] CONTAINER [CONTAINER...]

命令参数(OPTIONS):         -f, --format string    利用特定Go语言的format格式输出结果

-s, --size        显示总大小

命令演示:

容器日志信息 – docker logs

作用:     查看容器的日志信息

命令格式:     docker logs [OPTIONS] CONTAINER

命令参数(OPTIONS):             --details        显示日志的额外信息

-f, --follow                 动态跟踪显示日志信息

--since string      只显示某事时间节点之后的

--tail string            显示倒数的行数(默认全部)

-t, --timestamps         显示timestamps时间

--until string       只显示某事时间节点之前的

注意:     容器日志中记录的是容器主进程的输出STDOUT\STDERR

容器重命名 – docker rename

作用:     修改容器的名称

命令格式:     docker rename CONTAINER NEW_NAME

命令参数(OPTIONS):         无

六、容器运行时操作

容器连接 – docker attach

作用:     将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接

命令格式:     docker attach [OPTIONS] CONTAINER

命令参数(OPTIONS):         --no-stdin                 不绑定STDIN

容器中执行新命令 – docker exec

作用:     在容器中运行一个命令

命令格式:     docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

命令参数(OPTIONS):         -d, --detach                   后台运行命令

-i, --interactive        即使没连接容器,也将当前的STDIN绑定上

-t, --tty                      分配一个虚拟终端

-w, --workdir string           指定在容器中的工作目录

-e, --env list                 设置容器中运行时的环境变量

七、容器总结

容器的详解到这结束,后面还有更深入的文章讲解!

Docker核心技术之容器详解相关推荐

  1. Docker(十四):Docker:网络模式详解

    Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...

  2. Docker持续部署图文详解

    2019独角兽企业重金招聘Python工程师标准>>> Docker持续部署图文详解 博客分类: docker 架构 JAVA项目如何通过Docker实现持续部署(只需简单四步),即 ...

  3. 基于Kubernetes构建Docker集群管理详解

    from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...

  4. Docker系列07—Dockerfile 详解

    Docker系列07-Dockerfile 详解 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作  dockerfile,docker build 基于容器制作镜像,已经在上篇Do ...

  5. Docker:网络模式详解

    http://www.cnblogs.com/zuxing/articles/8780661.html Docker:网络模式详解 袖珍指南 Docker作为目前最火的轻量级容器技术,牛逼的功能,如D ...

  6. Docker常用命令使用详解(docker help、version、info、images)(一)

    Docker常用命令 命令 描述 docker .docker help.docker --help 列出可用命令 docker version 显示Docker版本信息 docker info 显示 ...

  7. STL 之 deque容器详解

    Deque 容器 deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容.deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中 ...

  8. STL 之 list 容器详解

    STL之list容器详解 List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入 ...

  9. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解

    c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...

最新文章

  1. libcurl多线程下载开发过程中需要注意的一个问题
  2. 华南理工计算机网络随随堂,计算机组成原理-2019春华工网络教育随堂练习
  3. java中把map转换成list
  4. Android之图片边显示模糊原因
  5. 【jzoj】2018.1.30NOIP普及组——模拟赛D组
  6. mocha 测试 mysql_node项目mocha自动化测试的疑问
  7. 上线 5 天获得 100 万用户,可为什么我开发的 App 最终却倒闭了?
  8. 读书笔记:windows程序设计
  9. UVM学习整理——附录(部分组件源码)
  10. html拷贝图片不显示,【原创软件小知识】——拷贝cad文件中光栅图片不显示的问题...
  11. 影集电子相册制作系统普及版 39.9.7已注册版
  12. Windows 下缺少依赖库问题解决
  13. matlab qpsk调制程序,qpsk调制与解调系统的matlab实现
  14. 【FXCG】多头陷阱知多少
  15. Notepad++的JsonViewer 插件安装失败的解决
  16. “法外狂徒”为什么那么多?用程序来告诉你!
  17. sql的一些简单查询
  18. CSS背景background设置
  19. matlab fkine,Matlab Robotics ToolBox 实战 -- 七次多项式取放轨迹规划
  20. Hadoop详解手册.pdf

热门文章

  1. 微信公众号为指定openid用户推送消息
  2. Oracle根据日期区间查询Date类型的数据
  3. 2022-2028年中国乙烷行业投资分析及前景预测报告
  4. mysql64如何配置_win7 64位下如何安装配置mysql-winx64(安装记录)
  5. python 实现桶排序
  6. 汇编语言中栈及栈操作的实现
  7. QNX Hypervisor管理程序
  8. deeplearning搜索空间
  9. Paddle预训练模型应用工具PaddleHub
  10. 分离内核和虚拟机支持安全的关键任务边缘计算