内容摘要

  • 暂停/取消暂停容器
  • 删除容器
  • 进入容器
  • 创建容器

暂停/取消暂停容器

暂停容器命令:

 docker pause 容器ID/容器名

注意STATUS列,被暂停的容器的状态依旧是“Up”,但是后面括号显示为“Paused”。


取消暂停命令:

 docker unpause 容器ID/容器名

可以看到STATUS列,状态变为“Up”,没有“Paused”字样了。

从上面可以看出,暂停操作表示容器没有退出,仍然在工作。暂停会减少CPU的使用,主机可以利用更多的计算资源。

在暂停的过程中,我们可以做很多操作,比如给容器文件系统建立快照,测试时查看日志等。


删除容器

使用命令:

docker rm 容器ID/容器名

容器删除报错,从错误信息可以看出,在删除前,必须先停止容器,命令为:

docker stop 容器ID/容器名

停止容器后,容器删除成功。


进入容器

容器可以看成是一台微型电脑,有自己独立的文件系统,环境变量等。因此,在容器运行起来后,可以进入容器内部观察。

进入容器方式有两种:

docker attach

docker attach 容器ID

容器ID可以是长ID或者短ID

运行centos容器,进入其中观察:

进入容器后发现,每隔5秒输出"hello docker"字符串,正好是运行容器时,使用while循环要求输出的内容。

可见,docker attach进入容器后,正好是容器运行时所用的同一终端,这点很重要。由于没有启动新的终端,没有启动新的进程,这样能节省资源。另外,如果我们想看容器启动时执行命令的输出信息,可以直接使用该命令。


docker exec

docker exec -it 容器ID bin/bash

-it 表示以交互模式打开终端,执行/bin/bash命令。

可以看出执行docker exec后,进入容器的主机名是容器的短ID。

进入后,可以执行在主机上执行的命令,如下:

运行ps -elf查看进程,可以看到输出结果最后一行显示当前的ps命令,倒数第二行显示的是容器运行执行的 sleep 5 指令;

pwd指令查看当前工作目录;

ls 查看根目录下文件信息;

hostname指令查看容器主机名为容器短ID。

在主机上能够运行的指令也能够在容器中执行,可见容器相当于一台微型电脑。


问题:容器中的文件系统和主机是一样的吗?

我们在容器中创建一个文件,并写入内容:

在根目录 / 下创建 hello_world.txt 文件,并写入 hello docker! 字符串。

接着使用 exit 命令退出容器,查看主机根据目录下是否有该文件:

退出容器后,可以看到主机名变为 DOCKER ,不再是容器的短ID了,可见已经从容器中退出来了。使用 ls 命令查看根目录下的文件,没有看到在容器中创建的 hello_world.txt 文件。

和docker exec相比,我们进入容器后新打开了一个终端,不是容器运行时使用的终端,因此无法看到容器运行指令的输出日志。


创建容器

前面讲到的docker run 命令可以直接运行一个容器,实际上该命令包括两个命令,即docker create 和 docker start(下一节会讲解):

新建两个容器,分别以docker run 和 docker create 执行,名字分别叫centos_run和centos_create,命令如下:

docker create --name docker_create centos /bin/bash -c "while true; do sleep 5; echo hello docker create; done"docker run -d --name docker_run centos /bin/bash -c "while true; do sleep 5; echo hello docker run; done"

从 docker ps -a 指令的输出结果STATUS列可以看出:centos_run容器的状态为Created,而centos_run容器的状态为Up。

注意:两个容器执行指令输出内容不同,docker_run容器输出 hello docker run,docker_create容器输出 hello docker create。


问题:处于Created状态的容器实际运行起来了吗?

可以通过 ps -elf 命令查看:

可以看到,只有centos_run容器的进程存在,centos_create容器进程不存在。

也就是说centos_create容器确实被创建了,但是没有运行。

对centos_create容器执行docker start命令:

可以看出,执行 docker start 命令后,centos_create 的状态变为了Up。

总之,容器运行被分解为了两个动作: create / start。


问题:处于Created状态下的容器可以执行 docker stop 操作吗?

docker stop操作可以顺利执行,不过查看STATUS 列,状态依然是Created,可见处于Created状态下的容器做docker stop 操作没有实际意义。


问题:处于Created状态下的容器可以执行 docker rm 操作吗?

可见,是可以做这个操作的。

上面的内容已经涉及到容器的状态和生命周期,下节会详细讲解容器的生命周期。


至此,容器的基本操作就讲解完了,这些操作基本涵盖了容器最常用的操作。

请大家按照本节的内容,在阿里云ECS服务器上做实验。


实验

暂停容器

取消暂停容器

删除容器

进入容器

创建容器

docker create_Docker动手教程2.2:容器基本操作2相关推荐

  1. Docker容器的详细教程(全面了解容器的使用)

    文章目录 **一:为什么需要Docker容器?** **1.引入** **1.1麻烦的环境部署** **1.2虚拟机(Virtual Machine)** **1.3Linux容器(Container ...

  2. Docker最全教程——Redis容器化以及排行榜实战(十三)

    Docker最全教程--Redis容器化以及排行榜实战(十三) 原文:Docker最全教程--Redis容器化以及排行榜实战(十三) 前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写 ...

  3. Docker最全教程——数据库容器化之持久保存数据(十一)

    Docker最全教程--数据库容器化之持久保存数据(十一) 原文:Docker最全教程--数据库容器化之持久保存数据(十一) 上一节我们讲述了SQL Server容器化实践(注意,SQL Server ...

  4. Docker最全教程——MongoDB容器化(十三)

    上一节我们讲述了数据库容器化之持久保存数据,本节将讲诉MongoDB容器化实践,并且接下来将逐步讲解其他数据库(MySql.Redis等等)的容器化实践,然后将讲诉一些分布式架构的项目实践.由于实践需 ...

  5. Docker最全教程——数据库容器化之持久保存数据(十二)

    上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MySql.Redis.Mongodb等等)的 ...

  6. Docker最全教程——数据库容器化(十一)

    终于按时完成第二篇.本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续--数据库容器化.本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容 ...

  7. Docker镜像与容器基本操作

    Docker镜像与容器基本操作 一.Docker基本命令 1.查看docker版本 2.搜索镜像和dockerhub 3.下载镜像 4.docker run 5.查看所有状态容器 二.docker镜像 ...

  8. 动手学Docker-第二弹-基本操作

    动手学Docker-第二弹-基本操作 Docker三大基本概念 镜像Image 容器Container 仓库Repository Docker Registry Docker Registry 公开服 ...

  9. Docker小白入门教程--docker理解与实战(懵逼三连--Docker是什么,为什么要使用Docker,如何使用Docker?)

    站在巨佬的肩膀上,才能看的更远!(没错这篇文章就是大量援引国内外网上各位大佬的博客,外加我这个小菜初入docker的一些理解,整理一下所学,也是为了方便我自己在暑假过完后,被别人问起docker问到我 ...

最新文章

  1. php获取类的熟悉,php如何获取类的所有方法
  2. JSON处理1.1:100DaysOfJavaEE8
  3. php xmldom扩展,如何使用比根更深入的PHP DOM向XML添加新元素?
  4. 未来十年,小程序将消失!
  5. java check word lock_Java多线程-新特征-锁(下)
  6. .Net下采用Base64编码的一个封装好的类库
  7. 博弈论学习 | 第七章 Evolutionary Game Theory
  8. SQL Server2000安装sp4补丁中的错误与破解
  9. 腾讯云LAMP搭建Discuz 域名解析
  10. C语言猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时..
  11. Python做数据处理(二):贷款风险预测
  12. 发多少范德萨范德萨范德萨范德萨
  13. java中feli删除操作_Feli的生日礼物
  14. 服务器端程序的演进过程
  15. Larry Wall, Perl教父访谈(Reship )
  16. amdgpu kfd TTM create GTT
  17. 简约精致毕业答辩PPT模板
  18. 华为模拟器eNSP练习题 - VRRP、STP
  19. 51单片机DS12C887时钟芯片和1602液晶显示完善前人例程版本
  20. 离心泵CAE_2_ICEM剖分网格_1_进口延伸段

热门文章

  1. 多个定时器相互干扰的问题_相互问题
  2. jigsaw kaggle_使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE
  3. HibernateNONSTRICT_READ_WRITE CacheConcurrencyStrategy如何工作
  4. java 编程工具_Java开发工具可以促进编程!
  5. javaserver_如何在JavaServer Pages中使用Salesforce REST API
  6. Apache Camel 3 –新增功能前10名
  7. 内存映射文件 写入 卡住_在Java中使用内存映射文件时检测(写入)失败
  8. jpa中::::_项目学生:JPA标准查询
  9. 轻松地与Java完全集成
  10. eclipse 重构_Eclipse对类固醇的重构