Docker入门基础
2025/9/17大约 5 分钟
Docker入门基础
前置知识
在开始本教程之前,建议您具备以下基础知识:
- Linux基本命令
- 基本的网络知识
- 了解虚拟化概念
什么是Docker?
Docker是一个开源的容器化平台,它可以让开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上。Docker具有以下特点:
- 轻量级:容器共享主机操作系统内核,无需完整的操作系统
- 可移植性:应用及其依赖被打包在一起,可在任何环境运行
- 快速部署:容器可以在几秒内启动和停止
- 版本控制:可以跟踪容器的版本变更和差异
- 复用:可以复用已有的容器层
Docker架构
graph TB
A[Docker客户端] --> B[Docker守护进程]
B --> C[镜像]
B --> D[容器]
B --> E[网络]
B --> F[数据卷]
Docker使用客户端-服务器架构:
- Docker守护进程:管理Docker对象
- Docker客户端:与Docker守护进程交互
- Docker镜像:用于创建容器的模板
- Docker容器:镜像的运行实例
Docker核心概念
镜像(Image)
- 轻量级、可执行的独立软件包
- 包含运行应用所需的所有内容
- 可以通过Dockerfile创建
容器(Container)
- 镜像的运行时实例
- 可以被创建、启动、停止、删除和暂停
- 相互隔离、互不影响
仓库(Repository)
- 集中存放镜像的地方
- 分为公共仓库和私有仓库
- Docker Hub是最大的公共仓库
安装Docker
Windows安装
- 下载Docker Desktop
- 运行安装程序
- 启动Docker Desktop
# 验证安装
docker --version
docker run hello-world
Linux安装(Ubuntu为例)
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 安装Docker
sudo apt-get update
sudo apt-get install docker-ce
配置镜像加速
在国内使用Docker时,建议配置镜像加速器:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
基本命令
1. 系统信息
# 显示Docker系统信息
docker info
# 显示Docker磁盘使用情况
docker system df
# 清理未使用的数据
docker system prune -a
2. 镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx
# 列出本地镜像
docker images
# 删除镜像
docker rmi nginx
# 构建镜像
docker build -t myapp:1.0 .
# 保存镜像
docker save -o nginx.tar nginx
# 加载镜像
docker load -i nginx.tar
3. 容器操作
# 创建并运行容器
docker run -d -p 80:80 --name webserver nginx
# 列出所有容器
docker ps -a
# 停止容器
docker stop webserver
# 启动容器
docker start webserver
# 重启容器
docker restart webserver
# 进入容器
docker exec -it webserver bash
# 查看容器日志
docker logs -f webserver
# 查看容器详细信息
docker inspect webserver
# 删除容器
docker rm webserver
4. 数据卷操作
# 创建数据卷
docker volume create mydata
# 列出数据卷
docker volume ls
# 查看数据卷详情
docker volume inspect mydata
# 删除数据卷
docker volume rm mydata
实战示例:部署Web应用
创建简单的Web应用
@RestController
@SpringBootApplication
public class DockerDemoApplication {
@GetMapping("/")
public String home() {
return "Welcome to Docker Demo!";
}
public static void main(String[] args) {
SpringApplication.run(DockerDemoApplication.class, args);
}
}
编写Dockerfile
FROM openjdk:11-jre-slim
WORKDIR /app
COPY target/docker-demo.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
构建和运行
# 构建镜像
docker build -t docker-demo .
# 运行容器
docker run -d -p 8080:8080 docker-demo
环境变量和配置
1. 环境变量
# 设置环境变量
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
# 从文件设置环境变量
docker run --env-file ./env.list mysql
2. 资源限制
# 限制CPU和内存
docker run -d \
--cpus=2 \
--memory=2g \
nginx
最佳实践
注意事项
- 安全性:使用官方镜像,定期更新
- 镜像大小:使用多阶段构建,删除不必要文件
- 资源限制:设置容器的CPU和内存限制
- 持久化:使用数据卷存储重要数据
- 日志管理:配置日志驱动,避免日志占用过多空间
- 网络隔离:使用自定义网络,增强安全性
性能优化
- 构建缓存:合理使用.dockerignore
- 层优化:合并RUN命令,减少层数
- 基础镜像:选择合适的基础镜像
- 资源配置:根据应用需求合理分配资源
- 网络模式:选择适合的网络模式
- 存储驱动:使用高性能的存储驱动
常见问题
1. 容器无法访问外网?
检查以下配置:
- DNS设置
- 网络模式
- 防火墙规则
- 路由配置
- 代理设置
2. 镜像体积过大?
优化建议:
- 使用多阶段构建
- 清理构建缓存
- 选择精简基础镜像
- 合并层数
- 删除不必要的文件
3. 容器启动失败?
排查步骤:
- 查看容器日志
- 检查端口占用
- 验证配置文件
- 检查资源限制
- 查看错误信息
总结
本教程介绍了Docker的基础知识,包括:
- ✅ 基本概念:Docker的特点和架构
- ✅ 环境搭建:不同系统的安装方法
- ✅ 基础命令:常用Docker命令
- ✅ 实战应用:部署Web应用示例
- ✅ 最佳实践:安全性和性能优化建议
下一步学习
- 深入学习Docker镜像和容器管理
- 了解Docker网络配置
- 探索Docker Compose的使用
- 学习Docker集群管理
- 掌握Docker安全最佳实践