前言
Docker 已经成为现代应用开发和部署的标准工具。通过容器技术,我们可以实现开发环境和生产环境的一致性,大大降低部署成本。
一、Docker 基础
1.1 核心概念
- 镜像(Image):应用的模板,包含代码、依赖和运行环境
- 容器(Container):镜像的运行实例,隔离的执行环境
- 仓库(Repository):存储镜像的地方,如 Docker Hub
1.2 安装和验证
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 验证安装
docker --version
docker run hello-world
二、构建 Docker 镜像
2.1 Dockerfile 基础
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
2.2 构建镜像
# 构建镜像
docker build -t myapp:1.0 .
# 查看镜像
docker images
# 推送到仓库
docker push myapp:1.0
三、容器管理
3.1 运行容器
# 启动容器
docker run -d --name myapp -p 8080:8080 myapp:1.0
# 查看运行中的容器
docker ps
# 进入容器
docker exec -it myapp bash
3.2 容器生命周期
docker stop container_id # 停止
docker start container_id # 启动
docker restart container_id # 重启
docker rm container_id # 删除
四、Docker Compose
使用 Compose 管理多容器应用,简化部署流程。
version: '3'
services:
app:
build: .
ports:
- "8080:8080"
environment:
- JAVA_OPTS=-Xmx256m
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
五、网络与数据卷
5.1 网络通信
# 创建网络
docker network create mynet
# 连接容器到网络
docker run --network mynet --name app1 myapp:1.0
5.2 数据持久化
# 创建数据卷
docker volume create mydata
# 挂载数据卷
docker run -v mydata:/data myapp:1.0
六、最佳实践
- 使用标准的 base 镜像
- 尽量减少镜像层数
- 定期扫描漏洞并更新
- 使用容器编排系统如 Kubernetes
总结
Docker 容器化是现代应用部署的必备技能。掌握基本的构建、运行和管理操作,就能快速上手 Docker。