docker教案

第1章 容器生态系统

  1. 系统讲解当前最流行的容器技术。
    从容器的整个生态环境到各个具体的技术,从整体到细节逐一讨论。
  2. 重实践并兼顾理论。
    从实际操作的角度带领大家学习容器技术。

为什么要写这个?
简单回答是:容器技术非常热门,但门槛高。
容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。
对 IT 行业来说,这是一项非常有价值的技术。而对 IT 从业者来说,掌握容器技术是市场的需要,也是提
升自我价值的重要途径。

002 容器生态系统

容器核心技术

容器核心技术是指能够让 container 在 host os上运行起来的那些技术

这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 以及 容器 OS,下面分
别介绍。

容器规范

容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt、红帽公司podman、containerd。为了保证
容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共
同成立了一个叫 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。

目前 OCI 发布了两个规范:runtime spec 和 image format spec

容器 runtime

runtime 是容器真正运行的地方。runtime 需要跟操作系统 kernel 紧密协作,为容器提供运行环境。
如果大家用过 Java,可以这样来理解 runtime 与容器的关系:
Java 程序就好比是容器,JVM 则好比是 runtime。JVM 为 Java 程序提供运行环境。同样的道理,容器只
有在 runtime 中才能运行。

lxc、runc 和 rkt 是目前主流的三种容器 runtime。

容器管理工具

器管理工具对内与 runtime 交互,对外为用户提 供 interface

lxd 是 lxc 对应的管理工具。
runc 的管理工具是 docker engine。docker engine 包含后台 deamon 和 cli 两个部分。我们通常提到
Docker,一般就是指的 docker engine。
rkt 的管理工具是 rkt cli。

容器定义工具

容器定义工具允许用户定义容器的内容和属性,这样容器就能够被保存,共享和重建。

docker image 是 docker 容器的模板,runtime 依据 docker image 创建容器。
dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker image。
ACI (App Container Image) 与 docker image 类似,只不过它是由 CoreOS 开发的 rkt 容器的 image 格
式。

Registry

容器是通过 image 创建的,需要有一个仓库来统一存放 image,这个仓库就叫做 Registry。

容器 OS

容器 OS 是专门运行容器的操作系统。与常规 OS 相比,容器 OS 通常体积更小,启动更快。因为是为容
器定制的 OS,通常它们运行容器的效率会更高。

03安装docker

容器需要管理工具、runtime 和操作系统,我们的选择如下:

  1. 管理工具 - Docker Engine,Docker 最流行使用最广泛。
  2. runtime - runc,Docker 的默认 runtime
  3. 操作系统 - CentOS Stream8
安装操作系统

1.基于 CentOS-Stream-8模板制作.pdf 这个实验手册做出来的模板克隆一个虚拟机命名为docker,并配静态IP 192.168.108.30,主机名改为docker

[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual 
ipv4.addresses 192.168.108.30/24 ipv4.gateway 192.168.108.2 ipv4.dns 
192.168.108.2 autoconnect yes
[root@localhost ~]# nmcli con up ens160

安装必要工具
# devicemapper 存储驱动已经在 docker 18.09 版本中被废弃,所以在后续的安Docker装中无需安装
devicemapper支持。
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 
vim      
[root@localhost ~]# yum-config-manager --add-repo 
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/dockerce.repo
[root@localhost
 ~]# yum makecache
Docker CE Stable - x86_64                                                         
                    57 kB/s |  66 kB     00:01
CentOS Stream 8 - BaseOS                                                         
                    8.3 kB/s | 3.9 kB     00:00
CentOS Stream 8 - AppStream                                                       
                   9.8 kB/s | 4.4 kB     00:00
Metadata cache created.
allinone部署
[root@docker ~]# yum install -y docker-ce

配置服务
[root@docker ~]# systemctl enable docker.service --now

验证安装
[root@docker ~]# docker --version
Docker version 26.1.3, build b72abbb

验证docker状态
[root@docker ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor 
preset: disabled)
   Active: active (running) since Wed 2025-09-03 13:51:07 CST; 36s ago
     Docs: https://docs.docker.com
 Main PID: 1813 (dockerd)
   Tasks: 10
   Memory: 135.7M
   CGroup: /system.slice/docker.service
           └─1813 /usr/bin/dockerd -H fd:// --
containerd=/run/containerd/containerd.sock

更多推荐