LaoCat带你认识容器与镜像(二【二章】)

news2024/11/15 15:58:25

系列二章二小节,发现概念性的知识看得人并不多,csdn的一篇解决问题的博文,却涨粉近400+,有点意思~

本章内容

操作Docker容器

本文实操全部基于Ubuntu 20.04

同样,容器也是Docker重要的核心成员之一,Docker容器简单来说是一个运行实例,和上节的镜像(静态的只读文件)相比,容器是运行时的可写文件。

创建容器

一、新建容器
使用命令docker create命令可以创建一个容器,执行命令如下。

再次输入docker ps -a命令,可以看到我们刚刚创建的容器,执行命令如下。

容器被create命令创建会处于停止状态,我们可以使用docker start来启动它;create命令附加参数较多,这里只列举部分常用的。

附加参数备注
-d是否后台(守护态)运行容器,默认为否。
–net指定容器的网络模式。
-p指定映射本地端口。
-v主机文件卷挂载到容器内。
-w指定容器的默认工作目录。
-e指定容器的环境变量。
–env-file同上,这个是指定从某个文件中读取环境变量。
–like连接到其他的容器,可以使IP或容器名。
–name指定容器别名。
–m指定容器的使用内存,单位可以使b、k、m或g。
–ulimit限制容器的最大文件数、最大进程数。

※ 这里只是列举了一些比较常用的附加参数,实际上createrun的附加参数特别多,如果有想了解的大家可以选择阅读《Docker技术入门与实战》或官网文档阅读了解。


二、启动容器
使用命令docker start可以启动一个已经创建好的容器或已经停止的容器,执行命令如下。


三、新建并启动容器
使用命令docker run可以直接创建容器并启动,相当于上边俩个命令的结合,docker run命令会使Docker在后台检测该运行镜像是否存在于本地镜像仓库,不存在就会从公共或配置好的个人镜像仓库拉取并下载,同时会分配一个文件系统给容器,并在只读镜像层外挂载一层可读写层,然后从宿主机的网桥接口中桥接一个虚拟接口,从地址池配置一个IP地址给到容器,最后执行指定的应用程序,执行完毕自动终止,推荐! 执行命令如下。

很多时候,容器需要后台运行也就是所谓的守护状态运行,这时,可以添加-d参数来实现,容器启动后都会返回一个唯一ID。
当然,并不是每一次的docker run会使容器正常运行,如果因为命令无法正常运行,就会导致容器直接终止或退出,下方列举一些非正常运行的错误码。

  • 127:该错误码指容器内命令无法找到。
  • 126:该错误码指启动容器的命令无法执行,最常见于权限不够。
  • 125:该错误码指Docker daemon执行错误,常见于执行了非Docker所支持的命令。

※ 演示命令不适用于生产环境,生产环境一定要挂载数据目录,防止容器或服务器重启导致配置丢失,尤其是数据库服务这些,不挂载数据目录,会导致数据丢失,读者一定要格外留心注意。


四、停止容器
使用命令docker stop可以停止一个正在运行中的容器,也可以通过docker kill来停止一个正在运行中的容器,俩者区别在于前者会先向容器发送sigterm信号,等待一段超时时间(默认10秒)后,再发送sigkill信号来停止容器,而后者会直接发送sigkill信号来强行停止容器,推荐前者! ,执行命令如下。



有细心读者会疑惑,有了启动,有了停止,没有重启这个操作吗?有!我们可以执行docker restart来重新启动该容器。


五、进入容器
后台启动的容器,我们是无法看到容器中的信息的,也无法进行操作,这时我们可以执行命令docker attachdocker exec,此处不推荐采用前者进入容器,因为attach命令打开的窗口是阻塞的,当某个窗口因命令阻塞时,其他窗口将无法执行操作,所有窗口都会同步显示,不是很方便实际使用与操作,这里推荐后者exec,执行命令如下。

这里介绍一下-it附加参数:

  • -i:打开标准输入接受用户输入的命令。
  • -t:分配一个伪终端。

※ 指定-it附加参数来保持标准输入打开,并且分配一个伪终端是常用的进入容器方式。


六、删除容器
使用docker rm可以删除已经停止的容器,执行命令如下。

有读者可能疑惑,不能强制删除容器吗?可以的,添加-f附加参数,Docker会先发送sigkill信号给容器,停止容器,然后强行删除,这里不推荐这种方式,就不做演示了,其他附加参数:

  • -v:删除该容器挂载的数据卷
  • -l:删除容器的连接,该容器并不会被删除。
  • -f:是否强制删除容器。

七、导出容器
使用docker export可以导出容器为一个文件,不关心容器是否正在运行,只要是已经创建好的,都可以通过该命令导出为一个文件,常常用于应用迁移,执行命令如下。

通常添加-o附加参数来指定导出的文件名,docker export mynginx > mynginx.tar同理。


八、导入容器
使用docker import可以将上述导出的容器文件导入为镜像,执行命令如下。

这与上篇操作镜像中的docker load命令及其相似,都是导入为一个镜像,俩者区别是load是将镜像存储文件导入为镜像,而import是将容器快照导入为镜像,import会将容器快照文件的历史数据与元数据信息全部丢弃,但可以在导入时重新指定标签等元数据信息,而load会保存完整的记录,不能再导入时重新指定标签等元数据信息,体积更大。


☆ 参考文献:
《Docker技术入门与实战》 第2版
《Docker技术入门与实战》 第3版

◎ 文中所用到的资源链接:
【SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结】https://blog.csdn.net/WJSZMD/article/details/89331751

您的点赞、评论、收藏、转发、关注是对我持续创作的最大帮助~

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

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

相关文章

如何与沃尔格林Walgreens建立EDI连接?

沃尔格林Walgreens从1901年芝加哥一个家庭作坊式的小店开始,经历了百年沧桑,如今已经拥有4000多家连锁药店,在自己100多年的发展历史中年年赢利,创造了连续100多年的赢利神话。 与沃尔格林Walgreens建立合作,一个重要环…

C++:函数指针进阶(三):Lambda函数详解(二)

一:Lambda表达式概述 Lambda表达式是现代C在C11和更高版本中的一个新语法糖,在C11,C14,C17和C20中Lambda表达的内容还在不断更新。Lambda表达式(也称为lambda函数)是在调用或作为函数参数传递的位置处定义…

记自己开发的淘宝客优惠券

目录 1.首页 1.1详情 1.2口令 1.3分类 1.4搜索 1.5个人中心 2.API开发教程 2.1什么是淘宝客 组成模式 2.2API申请 2.3SDK下载 2.3后台管理 闲暇时间浏览网站时,看到有关淘宝优惠券推广的文章,就想着能不能自己也做一个微信小程序。 但是&…

论文投稿指南——中文核心期刊推荐(化学 2)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

Java里一个线程调用了Thread.interrupt()到底意味着什么?

interrupted()是Java提供的一种中断机制,要把中断搞清楚,还是得先系统性了解下什么是中断机制。 什么是中断? 在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Ja…

zig语言代替C语言进行裸机开发的尝试-2023年笔记

接触rust的时候,无意中认识了zig,目前版本是zig 0.10.0,还没有正式的1.0版本。 初步使用的感受: 1). 用zig写出的代码更防崩,不会像C那样出现很多内存非法访问的情况 (比如这些情形:栈保护、整数溢出、…

pyqt5中QGraphicsView弹出菜单

QPainter与Graphics View 架构的区别PyQt5 提供了两种绘图方法。一种是使用 QPainter 类在 QWidget 类提供的画布上画图,可以 绘制点、线、圆等各种基本形状,从而组成自己需要的图形。所有界面组件都是 QWidget 的子类, 界面上的按钮、编辑框…

74、【哈希表】leetcode——18. 四数之和(C++版本)

题目描述 原题链接:18. 四数之和 解题思路 思路与三数之和:15. 三数之和,区别之处在于: 1、多一层for循环,用于多加一个数。 四数之和就是在三数之和多加一个数,用前两个数相加,后面两个数继…

Hadoop之MapReduce

一、概述 MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发运行在一个 Hadoop 集群上。 1、优缺点:优点:1)MapReduce 易于编程 它简单的实现一些接口,就可以完成一个…

(day2)自学java综合练习

目录 1.卖飞机票 2.找质数 3.开发验证码 4.数组元素的复制 5.评委打分 6.数字加密 7.数字解密 8.抢红包 9.模拟双色球 10.二维数组 1.卖飞机票 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格&#xff1…

推荐两个好用的虚拟机、SSH 终端开源工具(Virtual Box、WindTerm)

笔者最近因一些变故,加上阳了,停更了一段时间,并提前回老家过年了。因并没有带笔记本电脑回去,故在折腾了一番老家电脑后,选择拥抱开源,使用一些开源的工具,而非习惯的 VMware Workstation 和 S…

Python3,区区10行代码,批量把图片插入Excel指定单元格中,省下时间去烫头发。

这里写目录标题1、引言2、代码实战2.1 代码示例2.2 遇到问题及处理方案2.2.1 遇到问题2.2.2 解决方案3、总结1、引言 小屌丝:鱼哥, 想请教你个问题。 小鱼:啥问题呢? 小屌丝:我想把图片插入到excel里面 小鱼&#xff…

AVS3变换之ISP和ISTS

ISP(Implicit Selected Transform)是AVS3中新增的针对intra块的变换工具,IST对intra块提供了两种可分离的变换核,编码器根据RDO选择最优的变换核,但是对于选中的变换核不在码流中传输其索引,而是将其索引隐…

今天给大家介绍一篇医院医疗管理系统的设计与实现(源码+论文)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

一、多环境配置 在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为…

亚马逊云科技 2022 re:Invent 的几个关键词:数据、云原生端到端、安全

一转眼,又是一年。2022 年云计算行业重要的技术趋势和方向里,亚马逊云科技一年一度的 re:Invent 大会是不可或缺的一环。 今年已经是 re:Invent 大会连续举办的第十一年,和往年一样,亚马逊云科技将一年的重磅技术观察和实践干货悉…

【数据结构】单链表 — 纯C实现单链表

目录💌前言一、定义1.概念2.特点3.优点4.缺点5.结点定义接口实现创建链表结点创建单个结点创建链表打印链表测试创建功能尾插尾删尾部插入尾部删除尾插尾删测试头插头删头部插入头部删除头插头删测试pos位的插入删除查找pos位置在pos位置前插入在pos位置后插入删除p…

CUDA和Compute Capability

Compute Capability 参考 指示GPU硬件能够支持的特性,可以被应用参考哪些特性可以运行。 这里能够找到不同Compute Capability对应的硬件特性。比如我的笔记本搭载了一块Geforce830m,Compute Capability为5.0,硬件特性为 另外有关技术细节比…

面试官问我HTTP,我真的是

面试官:今天要不来聊聊HTTP吧? 候选者:嗯,HTTP「协议」是客户端和服务器「交互」的一种通迅的格式 候选者:所谓的「协议」实际上就是双方约定好的「格式」,让双方都能看得懂的东西而已 候选者&#xff1…

2023-01-02 Echarts学习笔记(一) 基础概念和应用示例:折线图

文章目录0.什么是Echarts?1.常见使用场景2.使用Echarts的基本步骤3.应用示例:做一个折线图4.参考资料0.什么是Echarts? ECharts.js是 百度出品的一个开源 Javascript 数据可视化库 一个使用 JavaScript 实现的开源可视化库, 可以流畅的运行在 PC 和移动设备上&a…