
Docker进阶与实战讲解
文章平均质量分 88
在计算机技术日新月异的今天,Docker 也算是其中异常璀璨的一员了。它的生态圈涉及内核、操作系统、虚拟化、云计算、DevOps 等热门领域,我认为有必要把自己的知识积累和实践经验总结出来分享给广大开发者。除了吸引更多的人投人到Docker 的生态建设以外,我们也希望通过本书帮助更多的读者更好。
BinaryStarXin
专注于网络技术、各类计算机热门行业技术研究分享、嵌入式开发、人工智能、后端与前端等方面的技术知识文章分享,欢迎留言
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Docker进阶与实战-仓库进阶(1)
仓库(repository)用来集中存储 Docker 镜像,支持镜像分发和更新。目前世界上最大最知名的公共仓库是Docker 官方发布的 Docker Hub,上面有超过15000个镜像。国内比较知名的 Docker仓库社区有 Docker Pool、阿里云等。为满足容灾需求,Docker 仓库后端通常采用分布式存储。比较常用的分布式存储平台包括亚马逊S3、微软Azure和华为UDS等。原创 2023-11-21 21:24:43 · 233 阅读 · 0 评论 -
Docker进阶与实战-理解 Docker镜像(2)
一些文件系统比如 btrfs 也具有写时复制的能力,故也可以作为 Docker 的存储驱动这些存储驱动的存储结构和性能都有显著的差异,所以我们需要根据实际情况选用合理的后端存储驱动。值得注意的是,Docker 提供了一套基于 notary 的镜像的签名机制,可以一定程度做到镜像的安全分发。Docker 作为新的开源项目,充分借鉴了 Git 的优点(利用分层)来管理镜像,使imagelayer的复用变成了可能,并且类比Github 提出了 Dockerhub 的概念,一定程度上变革了软件发布流程。原创 2023-08-06 23:21:06 · 97 阅读 · 0 评论 -
Docker进阶与实战-理解 Docker镜像(1)
但又可以把该容器保存为镜像,所以一般来说image的每个layer都保存自一个容器,所以该容器可以说是imagelayer的“模板”口Config:包含了该image的一些配置信息,其中比较重要的是:“env”容器启动时会作为容器的环境变量;口Namespace:类似于Github 中的命名空间,是一个用户或组织中所有镜像的集合口 Repository:类似于Git 仓库,一个仓库可以有多个镜像,不同镜像通过 tag 来区分口Tag:类似Git仓库中的 tag,一般用来区分同一类镜像的不同版本。原创 2023-08-06 23:14:47 · 119 阅读 · 0 评论 -
Docker进阶与实战-关于容器技术(3)
因此不同的进程在各自的Namespace内对同一种资源的使用不会互相干扰这样的解释可能不清楚,举个例子,执行 sethostname这个系统调用时,可以改变系统的主机名,这个主机名就是一个内核的全局资源。每个进程在procfs下都有一个目录,在那里面就有 Namespace相关的信息,如下。以下是一个简单的程序,在 Linux终端调用这个程序就会进入新的Namespace,同时也可以打开另一个终端,这个终端是在 host的Namespace里,这样就可以对比两个Namespace的区别了。原创 2023-08-06 23:00:49 · 104 阅读 · 0 评论 -
Docker进阶与实战-关于容器技术(2)
而Cgroup 可以对进程进行任意的分组,如何分组是用户自定义的,例如安卓的应用分为前台应用和后台应用,前台应用是直接跟用户交互的,需要响应速度快,因此前台应用对资源的申请需要得到更多的保证。口memory.oomcontrol:如果设置为0,那么在内存使用量超过上限时,系统不会“杀死”进程,而是阻塞进程直到有内存被释放可供使用时:另一方面,系统会向用户态发送事件通知,用户态的监控程序可以根据该事件来做相应的处理,例如提高内存上限等。口实时进程的CPU带宽限制。只读文件,显示目前允许被访问的设备列表。原创 2023-08-06 22:49:09 · 112 阅读 · 0 评论 -
Docker进阶与实战-关于容器技术(1)
到了2005年,同样是Odin公司,在Virtuozzo的基础上发布了OpenVZ技术,同时开始推动OpenVZ中的核心容器技术进入Linux内核主线,而此时IBM等公司也在推动类似的技术,最后在社区的合作下,形成了目前大家看到的Cgroup和 Namespace,这时,容器技术才开始逐渐进入大众的视野。对于容器,目前并没有一个严格的定义,但普遍认可的说法是,它首先必须是一个相对独立的运行环境,在这一点上,有点类似虚拟机的概念,但又没有虚拟机那样彻底。目录下,实现了简单的文件系统视图上的抽象或虚拟化。原创 2023-08-06 22:36:31 · 82 阅读 · 0 评论 -
Docker进阶与实战-Docker 简介(2)
对于内核,目前官方的建议是3.10以上的版本,除了内核版本以外,Dker 对于内核支持的功能,即内核的配置选项也有一定的要求(比如必须开启Cgroup和Namespace 相关选项,以及其他的网络和存储驱动等)。LXC 实现了“进程沙盒”,这一重要特性是跨主机部署的前提条件,但是只有这一点远远不够,比如,在个特定的LXC配置下执行应用程序,将该应用程序打包并拷贝到另一个LXC环境下,程序很有可能无法正常执行,因为该程序的执行依赖于该机器的特定配置包括网络、存储、发行版等。容器与虚拟机是互补的。原创 2023-08-06 18:51:55 · 100 阅读 · 0 评论 -
Docker进阶与实战-Docker 简介(1)
Docker 的另一个优势是对层级镜像的创新应用,即不同的容器可以共享底层的只读镜像,通过写入自己特有的内容后添加新的镜像层,新增的镜像层和下层的镜像一起又可以作为基础镜像被更上层的镜像使用。Docker 镜像的另一个创新是它是层级的并且是可复用的,这在实际应用场景中极为有用,多数基于相同发行版的镜像,在大多数文件的内容上都是一样的,基于此,当然会希望可以复用它们,而 Docker 做到了。类似的,Docker 的容器就是“软件界的集装箱”,它可以安装任意的软件和库文件,做任意的运行环境配置。原创 2023-08-06 18:43:46 · 106 阅读 · 0 评论 -
Docker源码分析-第3章-启动Docker Daemon
三者的关系⼤致如下:Docker Daemon通过Docker Server模块接收Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运⾏。由于Docker Daemon和Docker Client的启动流程有很多的相似之处,故本章不再赘述Docker Daemon启动的前期⼯作、flag参数的解析等内容,着重分析Docker Daemon启动流程中最为重要的环节:创建Daemon过程中mainDaemon()的实现。原创 2023-04-17 22:35:24 · 287 阅读 · 0 评论 -
Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)
在 Red Hat Enterprise Linux 7 中,默认网络服务由 NetworkManager 提供,后者是一个动态网络控制和配置守护进程,在网络设备和连接可用时保持启动和激活。传统的 ifcfg 类型配置文件仍受支持。1.1、NetworkManager 优点更轻松地进行网络配置: NetworkManager 确保网络连接正常工作。当发现系统中没有网络配置但存在网络设备时,NetworkManager 会创建临时连接以提供连接。原创 2023-04-04 23:01:33 · 4177 阅读 · 0 评论 -
Docker源码分析-第1章-Docker架构(1)
1.1 引⾔Docker是Linux平台上的⼀款轻量级虚拟化容器的管理引擎。在全球范围内,Docker还是⼀个开源项⽬,整个项⽬基于Go语⾔开发,代码托管于GitHub⽹站上,并遵从Apache 2.0协议。⽬前,Docker可以帮助⽤户在容器内部快速⾃动化部署应⽤,并利⽤Linux内核特性命名空间(namespaces)及控制组(cgroups)等为容器提供隔离的运⾏环境。Docker借助操作系统层的虚拟化实现资源的隔离,因此Docker容器在运⾏时与虚拟机(VM)的运⾏有很⼤的区别,Docker容器与原创 2023-04-04 23:00:25 · 235 阅读 · 0 评论