Docker容器技术入门
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器技术入门相关的知识,希望对你有一定的参考价值。
虚拟化与容器
虚拟化
主机级虚拟化
Type-I
Type-II
容器级虚拟化
FreeBSD jail, 2000
Linux VServer, 2001
KVM and container
虚拟化使得许多操作系统可同时在单个系统上运行。
容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
KVM and lxc Architecture
LXC Linux Container
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
Linux Namespaces 名称空间
用户名称空间的改进推动了容器的进一步发展。用户名称空间“使得用户和组 ID 可以按名称空间进行映射。对于容器而言,这意味着用户和组可以在容器内部拥有执行某些操作的特权,而在容器外部则没有这种特权。
Namespaces
Control Groups(cgroups) 控制组
UTS namespaces:主机名与域名
Mount namespaces:挂载点
IPC namespaces:信号量、消息队列和共享内存
PID namespaces:进程号
Network namespaces:网络设备、网络栈、端口等
User namespaces:用户和组
控制组 (cgroups) 是一项内核功能,能够控制和限制一个进程或多组进程的资源使用。而 systemd 初始化系统可设置用户空间,并且管理它们的进程,cgroups 使用该系统来更严密地控制这些隔离进程。
cgroups
blkio:块设备IO
cpu:CPU
cpuacct:CPU资源使用报告
cpuset:多处理器平台上的CPU集合
devices:设备访问
freezer:挂起或恢复任务
memory:内存用量及报告
perf_event:对cgroup中的任务进行统一性能测试
net_cls:cgroup中的任务创建的数据报文的类别标识符
Docker
早期版本:LXC ---> LXC的二次发行版
一个容器中只运行一个进程;镜像构建:分层构建,联合挂载
进程终止容器也可删除,容器有生命周期。与宿主机没有密切关联关系
容器编排工具:Machine+Swarm+Compose
ASF:Mesos+marathon
kubernetes:k8s
Docker后来自建了容器引擎:---> libcontainer ---> runC
Docker ---> Moby
Docker容器的优势
模块化
层和镜像版本控制
回滚
快速部署
参考文档:https://www.redhat.com/zh/topics/containers/whats-a-linux-container
Docker Architecture
C/S架构的应用程序
Containers:容器
Images:镜像
在Docker主机本地存储
Registries:镜像仓库
从Docker hub获取,站点:https://hub.docker.com/
Docker Registries有两重功能
1、提供镜像存储的仓库
2、用户来获取镜像的认证,当前服务器上所有可用镜像的搜索功能等
repository ---> repo 一个仓库只放一个应用程序镜像;仓库名+标签来唯一标识一个镜像;一个镜像可有多个标签(tag),不给标签名默认使用latest最新版。
镜像与容器关系:
镜像:静态
容器:动态
镜像与容器的关系就是程序与进程的关系;镜像是静态的,不会运行。容器则是动态的,它有生命周期。
Docker objects
images
containers
networks
volumes
plugins
以上是关于Docker容器技术入门的主要内容,如果未能解决你的问题,请参考以下文章