【docker专栏3】docker基础概念-容器、镜像以及引擎组成部分
一、docker镜像与容器
docker镜像是一个可执行的静态独立软件包,包含打包程序代码和软件运行环境等文件。如:代码、运行时库、环境变量和配置文件等都包含在其中。容器是镜像的运行时状态(镜像中的软件、程序运行),占用服务器CPU、内存、磁盘等资源。

如果学过java,用下面的这个类比能够更形象的理解二者之间的关系:
- 镜像可以类比java类的二进制字节码文件。
- 容器可以类比由字节码实例化出来的java对象。
- 一个字节码文件(类)可以new出来多个对象,一个镜像可以快速实例化多个容器服务。
镜像来源有哪些?
- Docker Hub官方镜像,以及国内阿里云等都有对外开放的docker镜像仓库。
- 使用Dockerfile自己构建镜像。Dockerfile是代码文件、环境变量、系统依赖软件等的构建描述,将镜像的构建过程固化下来,保证了不重复做环境安装工作。概念上类似于maven的pom.xml。
- 企业私有镜像以及私有镜像仓库Docker registry
docker容器的本质是宿主机上的一个进程,这句话怎么理解?
容器的的运行时实质是进程,但它与直接在宿主机里面执行的进程有所不同,容器进程存在属于自己的独立的命名空间。因此容器拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。
容器内的进程是运行在一个隔离的环境里,使用起来就好像是在一个独立于宿主的系统下操作一样。也因为这种隔离的特性,很多人初学 Docker 时常常会混淆容器和虚拟机。
二、Docker 核心组成部分
我们在前文中安装的Docker CE主要由如下几部分构成:Docker 客户端(Docker Client)、Docker 守护进程(Docker daemon)、containerd 以及 runc,它们协调合作共同负责容器的创建和运行以及生命周期的管理。

- Docker Client:命令行方式向docker引擎(服务端)发送指令。
- REST API:docker 引擎(服务端)通过RESTful API的方式,对外提供操作命令入口。
- daemon:docker 守护进程,包含REST AP、身份验证、基础配置管理等特性。
- containerd:核心功能用于容器生命周期的管理,如:启动、暂停、删除等。镜像管理功能也在containerd中。
- runc :runc是一个轻量级的、针对 Libcontainer 进行了包装的命令行交互工具(Libcontainer 取代了早期 Docker 架构中的 LXC)。LXC 提供了对诸如命名空间(Namespace)和控制组(CGroup)等基础工具的操作能力。
- namespace实现资源隔离,如:独立的文件系统、网络空间、用户空间等。
- cgroups实现资源的限制,如每个容器使用多少内存。
欢迎关注我的公告号:字母哥杂谈(侧边栏扫码关注),回复003赠送本文所在专栏《docker修炼之道》的PDF版本,30余篇精品docker文章。字母哥博客:zimug.com
【docker专栏3】docker基础概念-容器、镜像以及引擎组成部分的更多相关文章
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- docker的安装及基础操作与镜像构建
仓库配置及安装启动 [root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@loca ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)
1.简介 1.1. 背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...
- 运行docker容器镜像
docker容器可以理解为在盒中运行的进程. 这个盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等. 但这个盒默认是不会运行任何程序的. 1.运行镜像之前,可以先查看本地有 ...
- Docker最全教程之MySQL容器化 (二十四)
前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过此块,本篇仅从笔者角度进行总结和编写. 目录 镜像说明 运行MySQL容器镜像 1.运行MySQL容器 ...
- docker核心概念(镜像、容器、仓库)及基本操作
概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容 ...
- Docker中的三个基本概念容器(container)、镜像(image)和仓库(registry)之间有什么关系?
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等).镜像不包含任何动态数据,其内容在构建之 ...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...
- Docker 基础概念科普 和 常用操作介绍
Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...
随机推荐
- XCTF练习题---WEB---Cookie
XCTF练习题---WEB---Cookie flag:cyberpeace{dc6a6799546a3e0fbfeacb8650b55ff0} 解题步骤: 1.观察题目,打开场景 2.观察场景内容, ...
- Atlassian应对CVE-2022-22963,CVE-2022-22965的常见问题
CVE-2022-22965 常见问题解答 基本信息 已发现 Spring Framework 中的关键远程代码执行漏洞 CVE-2022-22965.根据 Spring 的安全公告,此漏洞会影响在 ...
- C#/VB.NET 合并PDF页面
本文以C#及vb.net代码为例介绍如何来实现合并PDF页面内容.本文中的合并并非将两个文档简单合并为一个文档,而是将多个页面内容合并到一个页面,目的是减少页面上的空白区域,使页面布局更为紧凑.合理. ...
- Kubernetes生产环境最佳实践
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 众所周知,Kubernetes很难! 以下是在生产中使用 ...
- grafana v8.0+ 隐藏表格字段
Select panel title → Inspect → Panel JSON Set "type" to "table-old" Apply The vi ...
- 如何使用Docker构建前端项目
原文链接 Docker单独部署前端项目和Node项目是非常便捷的,在这里分享一下Docker的使用,主要聊聊它的部署实践.(我是window10专业版安装Docker) Docker Docker是一 ...
- 136. Single Number - LeetCode
Question 136. Single Number Solution 思路:构造一个map,遍历数组记录每个数出现的次数,再遍历map,取出出现次数为1的num public int single ...
- 好客租房27-state的基本使用
5.1state的基本使用 状态:数据 是组件内部的私有数据 只能再组件内部使用 state的值是对象 表示一个组件中可以有多个数据 获取数据 this.state //导入react imp ...
- 没错,就是Access-Control-Allow-Origin,跨域
服务端添加: <add name="Access-Control-Allow-Origin" value="*" /><add name=&q ...
- 使用 KubeKey 搭建 Kubernetes/KubeSphere 环境的"心路(累)历程"
目录 今天要干嘛? 在哪里干? 从哪里开始干? 快速开干! 解决依赖问题再继续干! 如何干翻重来? 连着 KubeSphere 一起干! 干不过,输了. 重整旗鼓,继续干! 再次重整旗鼓,继续干! 一 ...