简介
Docker 是一个强大的平台,通过容器化技术彻底改变了软件开发和部署方式。本教程为开发者和 IT 专业人员提供了一份全面指南,帮助他们理解 Docker 的基础知识,并成功运行第一个容器,从而在不同系统中实现高效且一致的应用环境。
Docker 基础
什么是 Docker?
Docker 是一个开源平台,它使开发者能够通过容器化来自动化应用程序的部署、扩展和管理。它为运行应用程序提供了一个轻量级、可移植且自给自足的环境。
核心概念
容器
容器是轻量级、独立的可执行包,其中包含运行应用程序所需的一切:代码、运行时、系统工具、库和设置。
graph LR
A[应用程序代码] --> B[容器]
C[依赖项] --> B
D[运行时环境] --> B
Docker 镜像
Docker 镜像是用于创建容器的只读模板。它们是创建容器的基础,可以存储在 Docker Hub 等镜像仓库中。
Docker 架构
| 组件 | 描述 |
|---|---|
| Docker 客户端 | 用于与 Docker 交互的命令行界面 |
| Docker 守护进程 | 管理 Docker 对象的后台服务 |
| Docker 镜像仓库 | Docker 镜像的存储和分发系统 |
主要优势
- 一致性:确保开发和生产环境完全相同
- 隔离性:隔离应用程序及其依赖项
- 高效性:与传统虚拟机相比更轻量级
- 可扩展性:易于水平扩展应用程序
用例
- 微服务部署
- 持续集成/持续部署(CI/CD)
- 云原生应用开发
- 开发和测试环境
通过 LabEx 入门
为了通过实践学习 Docker 并获得实际经验,LabEx 提供了交互式环境,帮助你掌握容器化技术。
Docker 与传统虚拟化
graph TD
A[传统虚拟化] --> B[每个应用程序都有完整的操作系统]
A --> C[资源开销大]
D[Docker 容器化] --> E[共享操作系统内核]
D --> F[轻量级容器]
通过理解这些基础知识,你将为深入学习 Docker 并利用其强大的容器化功能做好充分准备。
安装与配置
系统要求
在安装 Docker 之前,请确保你的 Ubuntu 22.04 系统满足以下要求:
- 64 位操作系统
- Linux 内核 3.10 或更高版本
- 至少 2GB 内存
- 足够的磁盘空间
安装方法
方法一:官方 Docker 仓库
## 更新软件包索引
sudo apt-get update
## 安装所需软件包
sudo apt-get install ca-certificates curl gnupg lsb-release
## 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 设置稳定仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 安装 Docker 引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
方法二:便捷脚本
## 下载并运行 Docker 安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
安装后配置
用户组配置
## 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
## 验证安装
docker --version
Docker 配置文件
| 文件路径 | 用途 |
|---|---|
/etc/docker/daemon.json |
Docker 守护进程配置 |
~/.docker/config.json |
用户特定的 Docker 设置 |
Docker Compose 安装
## 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## 应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose
## 验证安装
docker-compose --version
验证流程
graph TD
A[安装 Docker] --> B[将用户添加到 Docker 组]
B --> C[验证 Docker 版本]
C --> D[运行测试容器]
D --> E[确认安装成功]
测试 Docker 安装
## 运行 hello-world 容器
sudo docker run hello-world
LabEx 建议
对于全面的 Docker 学习和实践操作,LabEx 提供交互式环境,引导你完成实际的 Docker 配置和用例。
常见故障排除
- 重启 Docker 服务:
sudo systemctl restart docker - 检查 Docker 状态:
sudo systemctl status docker - 验证网络连接:
docker info
运行第一个容器
基本的 Docker 命令
拉取镜像
## 从 Docker Hub 拉取 Ubuntu 镜像
docker pull ubuntu:latest
容器生命周期命令
| 命令 | 描述 |
|---|---|
docker run |
创建并启动一个新容器 |
docker ps |
列出正在运行的容器 |
docker ps -a |
列出所有容器 |
docker start |
启动一个已停止的容器 |
docker stop |
停止一个正在运行的容器 |
交互式容器执行
## 交互式运行 Ubuntu 容器
docker run -it ubuntu:latest /bin/bash
容器模式
graph LR
A[容器模式] --> B[交互式模式]
A --> C[分离模式]
A --> D[前台模式]
A --> E[后台模式]
分离模式示例
## 在后台运行 Nginx 网络服务器
docker run -d -p 80:80 nginx:latest
端口映射
## 将容器端口映射到主机端口
docker run -d -p 8080:80 nginx:latest
卷挂载
## 将主机目录挂载到容器
docker run -v /host/path:/container/path ubuntu:latest
环境变量
## 设置环境变量
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest
容器管理
## 删除一个容器
docker rm container_name
## 删除所有已停止的容器
docker container prune
高级容器操作
检查容器
## 查看容器详细信息
docker inspect container_name
## 查看容器日志
docker logs container_name
最佳实践
- 使用官方镜像
- 保持容器轻量级
- 使用特定的镜像标签
- 实施适当的资源限制
LabEx 学习建议
LabEx 提供全面的 Docker 容器管理教程,帮助你掌握实用的容器技能。
容器工作流程
graph TD
A[拉取镜像] --> B[创建容器]
B --> C[启动容器]
C --> D[交互/使用容器]
D --> E[停止容器]
E --> F[删除容器]
常见场景
| 场景 | Docker 命令 |
|---|---|
| 网络服务器 | docker run -d -p 80:80 nginx |
| 数据库 | docker run -d mysql:latest |
| Python 应用 | docker run -it python:3.9 |
故障排除提示
- 检查容器状态:
docker ps - 查看容器日志:
docker logs - 重启容器:
docker restart
总结
通过学习本教程,你已经掌握了安装 Docker、配置环境以及运行第一个容器的基本步骤。Docker 为应用程序的打包、分发和部署提供了强大的解决方案,使开发者能够以最少的配置创建可移植且可扩展的软件解决方案,并在不同的计算环境中实现最大程度的一致性。



