深入浅出Docker:容器技术全解析
创始人
2024-12-15 12:32:33
0 次浏览
0 评论
什么是docker?有什么用?
Google基于Linux内核的cgroup、namespace、UnionFS技术推出的操作系统级虚拟化技术称为Docker。它对进程进行封装和隔离,使进程独立于宿主机和其他隔离的进程,因此Docker也被称为容器。
Docker从0.7版本开始,从1.11版本开始,开始去掉LXC,使用自研的lib容器,也进化到使用runC和containerrd。
Docker是一个类似于虚拟机的Linux系统工具,但与虚拟机不同的是,Docker提供了一个私有的虚拟环境。
用通俗的语言来说,Docker可以理解为私有虚拟机,如果没有特殊需求,通常可以作为私有虚拟机来使用。
一个Docker镜像(image)相当于一个包含了系统整个根文件系统的容器模板,例如官方提供的ubuntu:18.04镜像就包含了最小的Ubuntu18.04系统。
镜像包含程序、库、资源、配置等文件以及运行时准备的配置参数,但不包含动态数据,创建后内容不会改变。
容器是基于镜像进行操作的实体,镜像和容器之间的关系类似于类和实例,可以创建、启动、停止、删除、暂停等。
容器本质上是进程,但它们运行在隔离的命名空间中,并且具有独立的文件系统、网络配置、进程空间和用户ID空间,使得容器化的应用程序比直接在主机上运行更安全。
容器存储层类似于分层镜像存储。
容器运行时根据镜像创建容器存储层,用于保存容器运行时的动态数据。
容器存储层的生命周期与容器的生命周期相同,当容器死亡时,存储层也随之消失,因此敏感数据不应该保存在容器存储层中,而应该保存在数据中。
用于保存数据的文件夹。
存储库是用于存储和分发Docker映像的中央服务。
一个存储库可以包含多个标签,每个标签对应一个图像。
存储库名称通常显示为由两部分组成的路径,但不是绝对的,取决于所使用的DockerRegistry软件或服务。
通过存储库和标签,用户可以访问和使用不同版本的镜像。
开始使用Docker的最佳方法是按照GitHub上的教程学习Docker的基本用法和概念:训练期间。
docker容器是什么
可能每个人都在某种程度上见过docker。但很多人不知道它是什么。
那么什么是Docker容器呢?事实上,Docker容器是一个非常易于使用的开源应用程序容器引擎。
什么是Docker容器?答:它是一个开源的应用容器引擎。
对于开发者来说使用起来也会非常方便。
什么是Docker容器?1.将应用程序及其依赖项打包到可移植容器中非常方便。
2.它几乎没有性能开销,并且可以轻松地跨机器和数据中心运行。
3.我们定期进行渗透测试,因此您不必担心安全性,而且非常可靠。
4.可用服务器众多,不用担心运行问题。
Docker的镜像和容器的区别
1.Docker镜像Docker镜像和Docker容器之间的区别并不容易理解。如果Linux内核是第0层,那么无论你如何运行Docker,它都位于内核层之上。
该Docker镜像是只读镜像,位于第1层,无法修改,也无法保存状态。
一个Docker镜像可以构建在另一个Docker镜像之上,并且这种关系可以是多层级联。
第一层的图像称为基础图像(BaseImage),其他层(除顶层外)的图像称为父图像(ParentImage)。
这些镜像继承父镜像的所有属性和设置,并将它们自己的配置添加到Dockerfile中。
Docker镜像由镜像ID来标识。
镜像ID是一个64个字符的十六进制字符串。
但是当我们运行一个镜像时,我们通常不会引用镜像的镜像ID,而是引用镜像的名称。
要列出所有有效的本地映像,可以使用#dockerimages命令。
图像可以发布为不同的版本。
如上图所示,neo4镜像有两个版本:最新版本和2.1.5版本。
您可以使用pull命令添加标题:#dockerpullubuntu:14.04#dockerpullubuntu:12.042.Docker容器可以使用以下命令创建Docker容器:#dockerrunimagename在所有镜像文件之上添加一个可写层。
这个可写层运行在CPU处理器上,有两种不同的状态:运行和退出。
这是一个Docker容器。
当我们使用dockerrun启动一个容器时,Docker容器就进入运行状态。
一旦我们让Docker容器运行起来,我们就对其进行从运行状态到阻塞状态的所有更改,以永久写入容器的文件系统。
请记住,容器更改将写入容器的文件系统,而不是Docker映像。
我们可以使用同一个镜像来启动多个Docker容器。
这些容器在启动后处于活动状态,并且彼此隔离。
对其中一个容器的更改仅限于容器本身。
如果容器底层镜像被修改,运行中的容器不会受到影响,也不会发生自动更新。
如果我们想要将容器更新为其镜像的新版本,我们必须确保数据的格式正确,否则我们可能会得到容器中的所有注释。
64个字符的十六进制字符串,定义容器ID,即容器的唯一标识符。
容器之间的通信通过容器ID来标识。
由于容器ID字符太长,因此只需填写容器ID的前4个字符即可。
当然我们也可以使用容器的名称,但是使用4个字符的容器ID更容易。
相关文章
Java实现:随机生成20个50~100...
2024-12-14 21:51:08C语言实现10个数平均值计算方法详解
2024-12-20 07:22:30C语言实现1至n整数求和及平均值计算教程
2024-12-21 14:34:37System.FormatExcepti...
2024-12-14 19:35:08C语言未知长度数组定义及实例解析
2024-12-15 04:24:26Portainer图形化工具入门:轻松管...
2024-12-15 23:07:19C语言数组清空:两种实用方法详解
2024-12-16 02:32:10Docker文件拷贝指南:容器与主机间数...
2024-12-15 08:37:32Java实现阶乘求和:计算1+2!+3!...
2024-12-21 06:12:01C语言教程:轻松掌握编写心形图案代码
2024-12-20 01:33:41最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
Redisson分布式锁深度解析:Red...
Redis实现分布式锁+Redisson源码解析在某些场景下,多个进程需要以互斥...
2
深度解析Docker:容器技术提升应用部...
docker是什么Docker是一种强大的开源容器技术,它将应用程序及其所有依赖...
3
Docker dockercp命令:容器...
Dockercp命令详解:在Docker容器和主机之间复制文件/...
4
Redis KEY模糊查询优化策略及SC...
RedisKEY*模糊查询导致交互速度慢、阻塞其他Redis操作在Redis中使...
5
Redisson深度解析:分布式锁实战与...
Redis:redis分布式锁实战之redisson在分布式环境中;个体锁不能再...
6
Python float()函数:Web...
Pythonfloat(input())的用法,web中的应用float(inp...
7
Java单例模式深入解析及实例代码分享
单例模式单例模式实例在Java中,单例模式确保类只存在一个实例。该模式的主要作用...
8
Docker核心原理解析:深入理解Nam...
DOCKER总结Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序...
9
C语言字符串输出技巧:指针与数组首地址的...
C语言字符串输出Chara[]="aaaaa";printf...
10
200本Java开发精选书籍免费分享!附...
Java开发书籍推荐(200多本)我整理了一份Java开发的邮件资源,一共大概2...