Docker容器

Docker相关回顾(未完)

本文主要是介绍Docker相关回顾(未完),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.概述

优点:轻量、业务隔离、标准交付

chroot:改变某个进程的根目录,使得该程序不能访问目录之外的其他目录,和容器类似

Docker利用Namespace做主机名、网络、PID等资源的隔离,用Cgroups对进程或者进程组做资源(CPU、内存等)限制,联合文件系统用于镜像构建和容器运行环境

Namespace

功能:对内核资源进行隔离,容器中的进程可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源

Docker主要用到5种:

  • pid namespace:隔离进程id
  • net namespace:隔离网络接口
  • mnt namespace:文件系统挂载点隔离
  • ipc namespace:信号量、消息队列、共享内存隔离
  • uts namespace:主机名和域名隔离

Cgroups

限制容器CPU和内存等资源的使用

联合文件系统

UnionFS,通过创建文件层进程操作的文件系统,非常轻快,Docker使用其为容器提供构建层,使容器可以实现写时复制以及镜像的分层构建和存储

常用的联合文件系统有AUFS、Overlay、Devicemapper

2.核心概念

镜像

容器启动的先决条件

一个只读的文件和文件夹组合,包含容器运行时所需要的所有基础文件和配置信息

使用:

  1. 自己创建镜像
  2. 从镜像仓库拉取别人的镜像

容器

容器是镜像的运行实体,镜像是静态的只读文件,容器带有运行时需要的可写文件层,容器运行真正的应用进程

容器有初建、运行、停止、暂停、删除五种状态

容器有自己独立的命名空间隔离和资源限制

仓库

存储和分发Docker镜像

分为公共镜像仓库和私有镜像仓库

3.Docker架构

整体架构采用C/S模式,主要由客户端和服务端两部分组成,客户端负责发送操作指令,服务端负责接收和处理指令

客户端

docker命令、REST API、各种语言的SDK

服务端

所有后台服务的统称

dockerd:负责响应和处理来自客户端的请求,转换为具体操作

containerd:管理容器生命周期,启动并管理runC

runC:运行容器的轻量级工具

containerd-shim:将containered和真正的容器进程解耦,作为容器进程的父进程,containerd重启不影响已经启动的容器进程

4.镜像使用

这篇关于Docker相关回顾(未完)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!