阶段一:容器化技术之Docker基础

认识容器技术

容器技术概述

容器技术是一种轻量级的虚拟化技术,它通过操作系统级别的隔离机制(Linux namespace),将应用程序及其依赖环境(如代码、运行时、系统工具、库等)打包成一个独立、可移植的单元(称为容器),从而实现快速部署、跨环境一致运行和资源高效利用,是一种进程级别的虚拟化。

容器的前世今生

前世 —— 为什么会有 Docker?

在 Docker 之前,软件交付和部署有几个痛点:

1. 开发环境和生产环境不一致

2. 传统虚拟机太重

3. 应用依赖管理复杂

➡️ 于是人们需要一种 轻量、隔离、可移植 的解决方案 —— 这就是 容器化(Container)

Docker 的诞生(2013 年)

一句话:Docker 把“环境”当做代码打包,解决了“能跑起来”的问题

今生 —— Docker 的发展历程

1. 2013 - 2014

2. 2015

3. 2017

4. 2019 - 2020

5. 现在(2025)

Docker 的价值

未来趋势

1. 云原生生态(Cloud Native)

2. 无服务器化(Serverless)

3. 轻量化运行时

容器引擎分类

Docker Engine

Podman

Containerd

Docker版本和安装

image

docker就是目前最火热的能实现容器技术的软件,使用go(golang)语言开发。

参考:https://www.docker.com/

Docker版本

Docker企业版(EE):专为企业的发展和IT团队建立。docker-ee为企业提供最安全的容器平台。

Docker社区版(CE):

<sheet sheet-id="yP1ybp" token="LGiosWzQBhVD8it2xDJcgXxvnua"></sheet>

<sheet sheet-id="MAz8A1" token="LGiosWzQBhVD8it2xDJcgXxvnua"></sheet>

服务器环境准备

操作系统

CentOS Stream 9

修改主机名和hosts

# hostnamectl set-hostname web01.itcast.cn

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.101   web01 web01.itcast.cn

命令作用:

执行结果:

关键参数:

注意事项:

服务管理:启动/停止/重启/查看状态

命令说明:

等价于 SELINUX=disabled


**关键参数:**

**注意事项:**




[ipv4]
method=manual
addresses=192.168.88.101/24
gateway=192.168.88.2
dns=8.8.8.8;

[ipv6]
method=ignore

注意事项:

centos镜像源有很多种,centos-base.repo基础源,epel-release扩展源

-----------------------------------------

自行配置chrony时间同步


**docker-ce的yum源下载(任选其一)**

注意事项:


**注意事项:**

注意事项:

{ }


**注意事项:**

修改前:
[Service]
Type=notify

修改后:
[Service]
Type=notify
ExecStart=/usr/bin/dockerd

注意事项:


**注意事项:**

注意事项:







参数说明:
-d:后台运行容器(守护模式)。
可通过浏览器访问http://192.168.88.130:8090

注意事项:

创建两个需要挂载的宿主机目录

从第一个容器把nginx.conf配置文件复制出来放到/opt/nginx/conf目录下面

在/opt/nginx/html创建一个测试页面

运行my-nginx01容器 harbor.lanqicheng.top/library/nginx:latest

参数说明:

新增参数:


**注意事项:**



实现环境变量设置和故障自动恢复

  harbor.lanqicheng.top/library/nginx:latest

  新增参数:

注意事项:

手动创建要使用的网络并在启动的时候进行网络指定

harbor.lanqicheng.top/library/nginx:latest


**注意事项:**



查看容器启动、停止、重启、和运行状态

#查看运行的容器

#查看所有的容器包括退出和停止的容器

#容器启动、重启、停止、删除,通过容器名称或者容器ID,删除容器必须先停止容器



#删除容器之前先要停止容器

#查看容器的详细信息,可以看到容器运行状态,挂载目录,网络地址,宿主机对应一个的PID号等

#查看容器的日志,可以通过日志进行问题排查,查看最新的300行(重点)

#查看容器时时输出日志

命令拆解:

命令部分重要程度详细解释
--tail普通限制显示最近的日志行数,数量由后面的 300 指定。
300普通日志行数 300,表示只显示最近的这几行日志。

注意事项:

可以登录一个正常运行的容器并在里面做具体的工作

命令拆解:

命令部分重要程度详细解释
my-nginx01:/etc/nginx/nginx.conf普通复制路径 my-nginx01:/etc/nginx/nginx.conf;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。
.普通复制路径 .;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。
/opt/nginx/conf/nginx.conf普通复制路径 /opt/nginx/conf/nginx.conf;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。
my-nginx01:/opt普通复制路径 my-nginx01:/opt;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。

注意事项:

#直接使用以下命令强制清理


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `status=exited` | 【普通】 | Docker 过滤条件或配置值 `status=exited`,用于限定查询结果或改变容器运行行为。 |
| `status=dead` | 【普通】 | Docker 过滤条件或配置值 `status=dead`,用于限定查询结果或改变容器运行行为。 |
| `status=created` | 【普通】 | Docker 过滤条件或配置值 `status=created`,用于限定查询结果或改变容器运行行为。 |
| `\|` | 【普通】 | 管道,把前一个命令的输出交给后一个命令继续筛选或处理。 |

**注意事项:**






关键组件说明



![](/assets/feishu-images/62149074e33d279c8e3b1a03.png)

![](/assets/feishu-images/0226539333932d1f9b07bbba.png)

容器间通信流程:

![](/assets/feishu-images/bf0a45b91232f6226ae6f220.png)

容器访问外网:

![](/assets/feishu-images/206a16269e19ba4668e21e55.png)

网络配置命令示例

命令拆解:

命令部分重要程度详细解释
--driver=bridge普通长参数 --driver 的值是 bridge,用于精确控制命令行为。
-d核心后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。
--name核心指定容器名称 web01,后续可以用这个名称执行 ps、logs、exec 等管理命令。
-p核心端口映射,格式是 宿主机端口:容器端口,把宿主机访问转发到容器端口。
8080:80普通Docker 镜像引用 8080:80,指定要运行、上传、下载或重新标记的镜像。
8090:80普通Docker 镜像引用 8090:80,指定要运行、上传、下载或重新标记的镜像。

注意事项:

网络架构图:

image

实现机制:

使用Host模式启动容器并进行访问

命令拆解:

命令部分重要程度详细解释
-d核心后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。
--name=my_nginx普通Docker 过滤条件或配置值 --name=my_nginx,用于限定查询结果或改变容器运行行为。
--cpus=1.5普通Docker 过滤条件或配置值 --cpus=1.5,用于限定查询结果或改变容器运行行为。
\普通\ 是 Docker run 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。

注意事项:

当容器修改文件时,联合文件系统会从底层的只读层复制文件到可写层,再修改(避免直接修改镜像层)。

Docker支持多种联合文件系统驱动,不同驱动实现细节略有差异:

image

小结:

需要记忆的核心命令:

---

本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。