Docker 从入门到实践:完整指南
目录
- 1. Docker简介
- 2. 核心概念
- 3. 安装Docker
- 4. Docker基本命令
- 5. Docker镜像管理
- 6. Docker容器管理
- 7. Docker网络
- 8. Docker存储
- 9. Dockerfile详解
- 10. Docker Compose
- 11. 实战案例
- 12. 最佳实践
1. Docker简介
1.1 什么是Docker?
Docker是一个开源的容器化平台,它可以让开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上。
1.2 为什么使用Docker?
- 一致的运行环境
- 快速部署
- 易于迁移
- 版本控制
- 资源隔离
- 快速回滚
2. 核心概念
2.1 镜像(Image)
- 只读的模板
- 包含运行应用所需的所有内容
- 可以基于其他镜像创建
- 分层结构
2.2 容器(Container)
- 镜像的运行实例
- 可以启动、停止、删除
- 相互隔离
- 可以持久化数据
2.3 仓库(Repository)
- 存储镜像的地方
- Docker Hub(公共仓库)
- 私有仓库
3. 安装Docker
3.1 Linux安装
# Ubuntu
sudo apt-get update
sudo apt-get install docker.io
# CentOS
sudo yum install docker-ce
3.2 验证安装
docker --version
docker info
4. Docker基本命令
4.1 系统信息
# 查看Docker版本
docker version
# 显示Docker系统信息
docker info
4.2 容器生命周期
# 创建并运行容器
docker run [options] IMAGE [command]
# 启动容器
docker start CONTAINER
# 停止容器
docker stop CONTAINER
# 重启容器
docker restart CONTAINER
# 删除容器
docker rm CONTAINER
4.3 容器操作
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 进入容器
docker exec -it CONTAINER bash
# 查看容器日志
docker logs CONTAINER
5. Docker镜像管理
5.1 镜像操作
# 查看本地镜像
docker images
# 拉取镜像
docker pull IMAGE[:TAG]
# 删除镜像
docker rmi IMAGE
# 构建镜像
docker build -t IMAGE_NAME .
5.2 镜像标签
# 给镜像打标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
6. Docker容器管理
6.1 端口映射
# 映射特定端口
docker run -p 8080:80 nginx
# 映射所有端口
docker run -P nginx
6.2 数据卷
# 创建数据卷
docker volume create my-vol
# 使用数据卷
docker run -v my-vol:/app nginx
7. Docker网络
7.1 网络类型
- bridge:默认网络驱动程序
- host:容器使用主机网络
- none:禁用所有网络
- overlay:多主机网络
7.2 网络命令
# 创建网络
docker network create my-net
# 连接容器到网络
docker network connect my-net container1
# 断开网络连接
docker network disconnect my-net container1
8. Docker存储
8.1 数据卷
- 持久化数据
- 容器间共享数据
- 数据备份
8.2 绑定挂载
# 绑定挂载
docker run -v /host/path:/container/path nginx
9. Dockerfile详解
9.1 基本指令
# 基础镜像
FROM nginx:latest
# 维护者信息
MAINTAINER your-name
# 执行命令
RUN apt-get update
# 复制文件
COPY ./app /app
# 设置工作目录
WORKDIR /app
# 暴露端口
EXPOSE 80
# 启动命令
CMD ["nginx", "-g", "daemon off;"]
10. Docker Compose
10.1 基本使用
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
11. 实战案例
11.1 部署Web应用
# 拉取nginx镜像
docker pull nginx:latest
# 运行nginx容器
docker run -d -p 8080:80 --name my-web nginx
# 查看容器状态
docker ps
# 访问网站
curl localhost:8080
11.2 数据库部署
# 运行MySQL容器
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-p 3306:3306 \
mysql:latest
12. 最佳实践
12.1 安全建议
- 使用官方镜像
- 定期更新镜像
- 限制容器资源
- 使用非root用户
- 扫描安全漏洞
12.2 性能优化
- 使用多阶段构建
- 优化镜像大小
- 合理使用缓存
- 合适的基础镜像
12.3 开发流程
- 编写Dockerfile
- 构建镜像
- 测试容器
- 推送到仓库
- 部署应用
常见问题解决
容器无法启动
# 查看容器日志
docker logs CONTAINER_ID
# 检查容器状态
docker inspect CONTAINER_ID
镜像构建失败
# 清理构建缓存
docker builder prune
# 使用--no-cache选项
docker build --no-cache .
参考资源
结语
Docker是一个强大的容器化工具,掌握它可以大大提高开发和部署效率。本文介绍的内容涵盖了Docker的基础知识和进阶使用,希望对你有所帮助。在实际使用中,建议多参考官方文档,并在实践中不断积累经验。
版权声明:转载请注明出处