Docker 容器
【摘要】 使用GO语言开发实现,基于Linux内核的Cgroups,Namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。最初实现是基于LXC,从0.7版本后开始去除LXC,转而使用自行开发的Libcontainer,从1.11开始进一步使用RunC和Containerd最近听说Docker要被美国封锁了 CgroupsControl Groups在...
使用GO语言开发实现,基于Linux内核的Cgroups,Namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。最初实现是基于LXC,从0.7版本后开始去除LXC,转而使用自行开发的Libcontainer,从1.11开始进一步使用RunC和Containerd
最近听说Docker要被美国封锁了
- Cgroups
- Control Groups
- 在Linux中限制某个或某些进程的分配资源
- 分配特定比例的CPU时间、IO时间、可用内存大小等。
- 将任意进程进行分组管理的Linux内核功能。
- Namespace
- 命名空间
- 是Linux中用于分离进程树、网络接口、挂载点以及进程间通信等资源的方式。Linux主要有7种不同的命名空间
- CLONE_NEWCGROUP
- CLONE_NEWIPC
- CLONE_NEWNET
- CLONE_NEWNS
- CLONE_NEWPID
- CLONE_NEWUSER
- CLONE_NEWUTS
- 通过以上7个选项创建新的进程时设置其应该在哪些资源与宿主机器进行隔离。
- AUFS
- Another Union File System 是一种文件系统
- 支持将不同目录挂载到同一个虚拟文件系统下的文件系统,可以把不同的目录联合在一 起,组成一个单一的目录。这是一种虚拟的文件系统,文件系统不用格式化,直接挂载即可。 Docker则一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件时,AuFS创建该文 件的一个副本。AuFS可以把多层合并文件系统的单层表示。这个过程称为写入复制(copy on write)。AuFS允许Docker把某种镜像作为容器的基础。使用AuFS的另一个好处是Docker的版 本容器镜像能力,每个新版本都是一个与之前版本的简单差异改动,有效地保持镜像文件最小化。
优势
1、更高效的利用系统资源
对系统资源利用率高,一台主机上可以同时运行数千个Docker容器。
2、更快速的交付和部署
3、更高效的部署和扩容
几乎可以运行在任意平台上,包括物理机、虚拟机、公有云、私有云等
4、更简单的管理
组件
- Docker Daemon服务器
- Dokcer Client客户端
- Docker Image镜像
- Docker Registry库
- Docker Contrainer容器
- Docker镜像
- 只读模板
- 用于创建Docker容器
- 由DockerFile文本描述镜像的内容
- 构建一个镜像实际就是安装、配置、运行的过程
- 基于UnionFS把以上过程进行分层(Layer)存储
- 支持多种生成方式
- 从无到有开始创建镜像
- 下载并使用现成的镜像
- 在现有镜像上创建新镜像
- 构建自定义镜像的两种方式
- Docker Commit
- Dockerfile
- Docker容器
- 每个容器互相隔离
- 组成部分
- 应用程序本身
- 依赖
- 在宿主机操作系统的用户空间中运行,与操作系统其它进程进程隔离。显著区别于传统虚拟机。
- Docker仓库
- Docker Registry也是一个容器,存放着多个仓库,每个仓库包含多个镜像,每个镜像有不同的标签(tag)。
- 两个版本
- 老代码库
- 用Python编写,存在pull和push的性能问题
- 新代码库
- 用Go语言编写,修改了镜像ID的生成算法,Registry上镜像的保存结构大大优化了老版本pull和push镜像的效率
- Docker Hub是Docker公司提供的互联网公共镜像仓库,用户可以在上面寻找镜像,也可推送私有镜像。
Docker中的Pull和push
- 注册Docker Hub账户,创建一个远程仓库
https://hub.docker.com/ - 将本地容器打包成镜像
Docker commit 容器名 镜像仓库:镜像标签
3.将本地容器打包到远程仓库
Docker tag 本地镜像仓库:本地镜像标签 远程仓库名:远程镜像标签
4.Push到远程仓库
Docker login //必须登录
Docker push 远程仓库名:远程镜像标签
远程镜像标签是自定义的名称,即在Docker Hub上看到的标签名
5.从远程pull到本地
Docker login
Docker pull 远程仓库名:远程镜像标签
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)