docker create_Docker动手教程2.2:容器基本操作2

内容摘要

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

暂停/取消暂停容器

暂停容器命令:

 docker pause 容器ID/容器名
828741427ace2939eae76700e64a0e4c.png

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


取消暂停命令:

 docker unpause 容器ID/容器名
ae5751e3241514d564c23157ac47b3f6.png

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

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

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


删除容器

使用命令:

docker rm 容器ID/容器名
a05216f20a2945aa97bc7f9daca1cdf9.png

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

docker stop 容器ID/容器名
b04473f9593e69cc63cf65b6947f8bdb.png

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


进入容器

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

进入容器方式有两种:

docker attach

docker attach 容器ID

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

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

0c693dda0ebf5f228ea3118398ad4675.png

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

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


docker exec

docker exec -it 容器ID bin/bash

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

6e40ce064a4cb92967b3ca42294e18c0.png

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

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

0b4222af238eb6dadcedb0c943184544.png

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

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

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

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

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


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

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

2a71cc3b37c068511f87c3f6433d7b51.png

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

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

f64904c060972fc2d99e31dd2580a7ef.png

退出容器后,可以看到主机名变为 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"
1c9b479cccb48e59a6aed057bbd9ef93.png

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

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


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

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

10cd9b6552bea5c45e0989010dfa8ee8.png

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

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

对centos_create容器执行docker start命令:

c9fa29a41b3581a31bab65358bbc9414.png

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

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


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

6fa9ee4cda4842c4b4ac0b1bbfcc36c2.png

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


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

941c972b1c0f45c73cc7aab494957cc4.png

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

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


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

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


实验

暂停容器

取消暂停容器

删除容器

进入容器

创建容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 Mac OS X 内核技术来源

Mach(Multiple Asynchronously Communication Hosts) 是一个由卡内基梅隆大学开发的操作系统内核,Mach的开发是为了取代BSD的UNIX核心。 Mach 内核的设计目标之一是要兼容 Unix 系统。 当初他们的设想是,真正的操作系统可以作为一…

用C语言编程画出图形,C语言图形编程(六) -图形程序设计实例:零件图形的绘制...

实例:一个零件图形的绘制有一个零件图,如下:对图3-1中的零件图形,如何根据它所标注的尺寸,按照适当的顺序有步聚地画出该图形,这首先要分析此零件图形的几何关系,了解构成这个图形各线段的性质&…

mfc怎么获取进程的线程数_Python多线程获取小米应用商店App,看看我是怎么做到的

一、【项目背景】小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个的搜索太麻烦了。而且速度并不是很快。今天小编就教大家利用多线程爬取小米应用商店的游戏模块,快速获取我们想要的软件安装包。二、【项目目标】目标 &a…

Linux Distribution Timeline for 2010(Linux 2010 年发行版时间线/族谱/发展图)

此图来自维基百科(wikimedia),具体地址为:https://commons.wikimedia.org/wiki/File:Linux_Distribution_Timeline.svg?uselangzh-hans#filehistory

git强制推送_Git 常用命令

Git 常用命令总结1. GIT 工作区add commitworking directory ------- index(stage) ---------- HEAD | | | | | | 工作目录 暂存区 …

golang 泛型_Golang 1.x版本泛型编程

本文介绍了Golang 1.x版本的泛型编程。往期回顾:浅谈动态追踪技术Go是一门天生为服务器程序设计的简洁的语言,因此Go的设计原则聚焦在可扩展性、可读性和并发性,而多态性并不是这门语言的设计初衷,因此就被放在了一边。虽然在2.0版…

jwt令牌_JWT令牌的秘密轮换

jwt令牌当您使用JSON Web令牌 ( JWT )或需要对有效载荷信息进行签名或加密的任何其他令牌技术时,设置令牌的到期日期很重要,因此,如果令牌到期,则可以假定这可能被视为安全漏洞,您拒绝使用此令牌…

jasperreports_JasperReports:棘手的部分

jasperreports如果您使用Java进行编程的时间足够长,则有可能需要为业务用户生成报告。 就我而言,我已经看到几个项目使用JasperReportsLibrary来生成PDF和其他文件格式的报告。 最近,我荣幸地观察了Mike和他的团队使用上述报告库以及他们所面…

电脑运行adb闪退_adb+python进阶使用

之前文章有提到过使用python加adb刷视频,今天带来进阶版——无线多台手机。首先要使用adb连接多台手机,手机和电脑肯定要在统一局域网内。1.打开手机开发者模式,并通过USB接口链接电脑。2.打开cmd:输入adb tcpip 5555, 会得到相关…

java office在线编辑_国外10个最受欢迎的 Java 开发的 CMS 系统

CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子…

apache kafka_Apache Kafka简介

apache kafka什么是Apache Kafka? Apache Kafka是一个分布式流系统,具有发布和订阅记录流的功能。 在另一方面,它是企业消息传递系统。 它是一个快速,水平可扩展和容错的系统。 Kafka有四个核心API, 生产者API&#x…

人脸特征值能存放在sql server中吗_SQL运行内幕:从执行原理看调优的本质

原文链接:https://www.cnblogs.com/arthinking/p/13205303.html相信大家看过无数的MySQL调优经验贴了,会告诉你各种调优手段,如:避免 select *;join字段走索引;慎用in和not in,用exists取代in&a…

rest资源设计_REST资源何时应获得其自己的地址?

rest资源设计在纯粹的REST方法中,所有端点(起始端点除外)都是不透明的,因此不需要发布其各种详细信息。 即使使用这种方法,本文中的要点也很重要,因为服务器逻辑将必须确定何时需要结束点。 介绍 在REST体…

ckeditor回显带标签_Spring Boot中带有CKEditor的AJAX

ckeditor回显带标签1.概述 在本文中,我们将介绍如何在Spring Boot中使用CKEditor 。 在本教程中,我们将导入一个包含大量数据的XML文档,对使用GET请求将一组数据加载到CKEditor实例的能力进行编程,并执行POST请求以保存CKEditor的…

android 可行性分析,可行性研究项目分析程序与步骤

项目分析程序项目分析分析工作步骤分析程序框架分段实施方法第一阶段初期工作1、收集资料。包括业主的要求,业主已经完成的研究成果,市场、厂址、原料、能源、运输、维修、共用设施、环境、劳动力来源、资金来源、税务、设备材料价格、物价上涨率等有关资…

原码一位乘法器设计_十分钟带你彻底搞懂原码、反码、补码

点击上方“程序员大白”,选择“星标”公众号重磅干货,第一时间送达编辑 | 程序员大白公众号来源丨https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html仅作学术交流,如有侵权,请联系删文本篇文章讲解了计算…

Linux 目录之 /etc/init.d/ 介绍

文章目录一、关于目录 /etc/init.d/二、关于目录 /etc/rc.d/init.d/三、关于文件 /etc/rc.local四、/etc/init.d/ 和 service 文件五、关于命令 service六、关于文件 /etc/inittab七、关于目录 /etc/init/注意:以 System V init 或者 Upstart 为初始化系统的 Linux …

java 异常处理发生异常_处理Java中的异常

java 异常处理发生异常每个程序员都希望编写一个完美的程序。 也就是说,程序运行时没有任何障碍。 好吧,如果希望是马,乞g就会骑。 除了程序员的所有愿望之外,有时还会发生无法预料的情况。 在Java中,这些无法预料的…