Docker基础和常用命令

Docker基础和常用命令一 , Docker 简介1.1 , 什么是 DockerDocker 使用 Google 公司推出的 Go 语言 进行开发实现 , 基于 Linux 内核的 cgroup , namespace , 以及 OverlayFS 类的 Union FS 等技术 , 对进程进行封装隔离 , 属于操作系统层面的虚拟化技术 。由于隔离的进程独立于宿主和其它的隔离的进程 , 因此也称其为容器 。Docker容器与虚拟机类似 , 但二者在原理上不同 。容器是将操作系统层虚拟化 , 虚拟机则是虚拟化硬件 , 因此容器更具有便携性、能更高效地利用服务器 。
专业名词 Docker 有两个意思:

  • 代指整个 Docker 项目 。
  • 代指 Docker 引擎 。
Docker 引擎(Docker Engine)是指一个服务端-客户端结构的应用 , 主要有这些部分:Docker 守护进程、Docker Engine API(页面存档备份 , 存于互联网档案馆)、Docker 客户端 。
1.2 , Docker 与虚拟机的区别
  • 传统虚拟机技术是虚拟出一套硬件后 , 在其上运行一个完整操作系统 , 在该系统上再运行所需应用进程 。
  • Docker 容器内的应用进程直接运行于宿主的内核 , 容器内没有自己的内核 , 而且也没有进行硬件虚拟 。因此容器要比传统虚拟机更为轻便 。
特性Docker虚拟机启动秒级分钟级硬盘使用一般为 MB一般为 GB性能接近原生弱于系统支持量单机支持上千个容器一般几十个1.3 , Docker 架构
Docker基础和常用命令

文章插图
runc 是一个 Linux 命令行工具 , 用于根据 OCI容器运行时规范 创建和运行容器 。containerd 是一个守护程序 , 它管理容器生命周期 , 提供了在一个节点上执行容器和管理镜像的最小功能集 。
1.4 , 为什么用 DockerDocker 作为一种新的虚拟化技术 , 跟传统的虚拟化技术相比具有众多的优势:
  1. 更高效的利用系统资源:不需要进行硬件虚拟以及运行完整操作系统等额外开销 , Docker 对系统资源的利用率更高 。
  2. 更快速的启动时间:Docker 容器应用直接运行于宿主内核 , 不需要启动完整的操作系统 , 所以启动时间可做到秒级的启动时间 。
  3. 一致的运行环境:Docker 镜像提供了除内核外完整的运行时环境 , 确保开发环境、测试环境、生产环境的一致性 。
  4. 持续交付和部署:开发人员可以通过 Dockerfile 来进行镜像构建 , 并结合持续集成(Continuous Integration) 系统进行集成测试 , 而运维人员则可以直接在生产环境中快速部署该镜像 , 甚至结合持续部署(Continuous Delivery/Deployment) 系统进行自动部署 。
  5. 更轻松的迁移:Docker 可以在很多平台上运行 , 无论是物理机、虚拟机、公有云、私有云 , 甚至是笔记本 , 其运行结果是一致的 。
  6. 更轻松的维护和扩展 。
二 , Docker 基本概念Docker 三个基本概念:
  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)
2.1 , 镜像操作系统分为内核和用户空间 。对于 Linux 而言 , 内核启动后 , 会挂载 root 文件系统为其提供用户空间支持 。而 Docker 镜像(Image) , 就相当于是一个 root 文件系统 。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统 。
Docker 镜像 是一个特殊的文件系统 , 除了提供容器运行时所需的程序、库、资源、配置等文件外 , 还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。镜像 不包含 任何动态数据 , 其内容在构建之后也不会被改变 。

经验总结扩展阅读