Docker 容器

举报
XueMian 发表于 2020/11/27 10:06:40 2020/11/27
【摘要】 使用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

  1. 注册Docker Hub账户,创建一个远程仓库
    https://hub.docker.com/
  2. 将本地容器打包成镜像

Docker commit 容器名 镜像仓库:镜像标签

    3.将本地容器打包到远程仓库

Docker tag 本地镜像仓库:本地镜像标签  远程仓库名:远程镜像标签

    4.Push到远程仓库

Docker login    //必须登录

Docker push 远程仓库名:远程镜像标签

远程镜像标签是自定义的名称,即在Docker Hub上看到的标签名

    5.从远程pull到本地

Docker login

Docker pull 远程仓库名:远程镜像标签

 

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。