# Docker-learn-day1

# 第一篇 什么是 Docker

# 容器

  • 容器:描述一个物理资源隔离的运行环境的术语。
  • Docker 组成:Docker 包括一个命令行程序,一个守护进程和一组远程服务。

# 容器不是虚拟化

  • Docker 容器不使用硬件虚拟化,它直接与 Linux 内核打交道。
  • 容器存在已久,Docker 并不提供容器技术,只是 Docker 的出现方便了容器的使用。
  • Docker 依赖:LXC(Linux Container)和 Cgroups(Control Groups)

# Docker 构建的容器隔离

  • PID 命名空间 ———— 进程标识符和能力
  • UTS 命名空间 ———— 主机名和域名
  • MNT 命名空间 ———— 文件系统访问和结构
  • IPC 命名空间 ———— 通过共享内存的进程间通信
  • NET 命名空间 ———— 网络访问和结构
  • USR 命名空间 ———— 用户名和标识
  • chroot() ———— 控制文件系统根目录的位置
  • cgroups ———— 资源保护

# 分发容器

  • 命名空间和 cgroups 管理运行着的容器,而 Docker 另一套技术(镜像)像运输集装箱一样为文件提供容器。
  • 一个 Docker 容器 = 一个集装箱,用于打包和分发的软件实现的组件就是 Docker 镜像。
  • 镜像在 Docker 生态系统中是可交付的基本单位。
  • 简化分发镜像的基础设施组件:注册服务器 + 索引服务器(包括官方和其他托管公司)

# 第二篇 Docker 解决什么问题

  • 软件越多,潜在风险越大,并且越难管理。
  • 组织有序
  • 提高可移植性

# 组织有序

  • “如果没有 Docker,一台机器运行完看起来就像一个装满垃圾的抽屉”
  • 小 tips:/lib 目录为 Linux 操作系统库文件目录,因此一些依赖的名字都是以 lib 为前缀的。
  • 运行在容器中的应用程序与各自的依赖互相捆绑在一起,在此之前是互相交错的状态。

# 提高可移植性

  • 虽然没有办法完全移植,因为想这样做需要构建整个可移植的软件版本。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*