Docker 入门与实战指南
Docker 入门与实战指南
一、Docker 简介
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包成一个可移植的容器。容器可以在任何安装了 Docker 的环境中运行,确保应用的一致性和可移植性。
1.1 为什么使用 Docker?
- 环境一致性:在不同环境中(开发、测试、生产)保持一致的运行环境。
- 快速部署:容器启动速度快,适合微服务架构。
- 资源隔离:容器之间相互隔离,避免资源冲突。
- 可扩展性:轻松扩展应用实例,适应高并发场景。
二、Docker 基础
2.1 容器、镜像与仓库
- 容器:运行中的镜像实例,可以理解为一个轻量级的虚拟机。
- 镜像:容器的模板,包含应用程序及其依赖。
- 仓库:存储和管理镜像的地方,可以是公共仓库(如 Docker Hub)或私有仓库(如 Nexus、Harbor)。
2.2 容器的作用与资源隔离
- 资源隔离:容器之间相互隔离,避免资源冲突。
- 环境一致性:确保应用在不同环境中的一致性。
三、Docker 安装
3.1 在 Ubuntu 上安装 Docker
# 更新包索引
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 -# 添加 Docker 的 APT 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 更新包索引
sudo apt-get update# 安装 Docker CE
sudo apt-get install docker-ce# 验证 Docker 是否安装成功
sudo docker run hello-world
3.2 在 Windows 和 macOS 上安装 Docker
- 下载并安装 Docker Desktop。
3.3 在 CentOS 7 64 上安装 Docker
- 参考博主的另外一篇文章 CentOS 7 64 安装 Docker。
四、Docker 基本命令
4.1 常用命令
# 查看所有运行中的容器
docker ps# 查看所有容器(包括停止的)
docker ps -a# 查看所有镜像
docker images# 拉取镜像
docker pull <镜像名称># 运行容器
docker run -d -p 8080:80 --name my_container nginx# 进入容器
docker exec -it <容器名称或ID> /bin/bash# 停止容器
docker stop <容器名称或ID># 删除容器
docker rm <容器名称或ID># 删除镜像
docker rmi <镜像ID>
4.2 查看容器日志与进入容器内部
# 查看容器日志
docker logs <容器名称或ID># 进入容器内部
docker exec -it <容器名称或ID> /bin/bash
五、Docker 网络
5.1 Docker 网络类型
- Bridge:默认网络,容器之间可以通过桥接网络通信。
- Host:容器使用主机的网络栈。
- None:容器没有网络连接。
5.2 自定义网络
# 创建自定义网络
docker network create my_network# 查看网络
docker network ls# 查看网络详细信息
docker network inspect my_network
5.3 桥接模式的容器互联
# 运行容器并连接到自定义网络
docker run -d --name container1 --network my_network nginx# 运行另一个容器并连接到同一个网络
docker run -d --name container2 --network my_network nginx
六、Docker 数据管理
6.1 数据卷
数据卷允许容器与主机之间共享数据,并且数据在容器停止后仍然保留。
# 创建数据卷
docker volume create my_volume# 使用数据卷
docker run -d -v my_volume:/data nginx
6.2 数据卷挂载
# 挂载主机目录到容器
docker run -d -v /host/path:/container/path nginx
七、Dockerfile
7.1 基本概念
Dockerfile 是一个文本文件,包含一系列指令,用于构建 Docker 镜像。
7.2 常用指令
- FROM:指定基础镜像。
- RUN:执行命令。
- COPY:复制文件。
- EXPOSE:暴露端口。
- CMD:容器启动时执行的命令。
7.3 示例:构建 SpringBoot 项目镜像
FROM openjdk:8-jdk-alpine
COPY target/myapp.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
# 构建镜像
docker build -t myapp .# 运行容器
docker run -d -p 8080:8080 --name myapp_container myapp
八、Docker Compose
8.1 基本概念
Docker Compose 是一个工具,用于定义和运行多容器的 Docker 应用程序。通过一个 YAML 文件,可以定义多个服务、网络和卷。
8.2 安装 Docker Compose
# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose# 验证安装
docker-compose --version
8.3 使用 Docker Compose
- 创建
docker-compose.yml
文件:
version: '3'services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmldb:image: postgres:latestenvironment:POSTGRES_PASSWORD: example
- 启动服务:
docker-compose up -d
- 停止服务:
docker-compose down
九、Docker 私有仓库
9.1 基本概念
Docker 私有仓库用于存储和管理镜像,可以是公司内部的镜像仓库。
9.2 Nexus 镜像仓库搭建与配置
- 安装 Nexus:
# 下载 Nexus
wget https:// sonatype.com/download/nexus# 安装 Nexus
sudo apt-get install nexus# 启动 Nexus
sudo systemctl start nexus
- 配置 Nexus:
- 访问 Nexus 管理界面:http://localhost:8081
- 创建 Docker 私有仓库
- 使用 Nexus:
# 登录 Nexus
docker login nexus.example.com# 推送镜像
docker push nexus.example.com/myapp# 拉取镜像
docker pull nexus.example.com/myapp
十、Portainer 可视化界面
10.1 基本概念
Portainer 是一个开源的 Docker 管理工具,提供直观的 Web 界面,方便管理和监控 Docker 容器和集群。
10.2 安装 Portainer
# 下载 Portainer
docker volume create portainer_datadocker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
10.3 使用 Portainer
- 访问 Portainer 管理界面:http://localhost:9000
- 登录并连接到 Docker 环境
- 管理容器、镜像、网络和卷
十一、项目实战
11.1 微服务部署
-
微服务架构带来的问题:
- 服务之间的依赖管理
- 服务的部署和扩展
-
微服务项目部署流程注意事项:
- 服务之间的网络通信
- 数据卷的使用
- 配置管理
-
Docker 构建项目结构规划解析:
- 每个服务作为一个独立的容器
- 使用 Docker Compose 进行服务编排
-
基于 Docker Compose 实现微服务部署:
- 创建
docker-compose.yml
文件 - 启动服务
- 管理服务
- 创建
11.2 SpringBoot 项目构建与推送
-
构建镜像:
docker build -t myapp .
-
推送镜像:
docker push myapp
-
部署容器:
docker run -d -p 8080:8080 --name myapp_container myapp
11.3 Alibaba Cloud Toolkit 插件安装与使用
-
安装 Alibaba Cloud Toolkit 插件:
- 打开 IntelliJ IDEA
- 进入插件市场,搜索并安装 Alibaba Cloud Toolkit
-
结合 Cloud Toolkit 实现项目部署:
- 配置 Docker 环境
- 部署项目到 Docker 容器
十二、总结
Docker 是一个强大的工具,可以简化应用的部署和管理。通过本文的学习,你应该能够:
- 安装和配置 Docker
- 使用基本的 Docker 命令
- 使用 Docker Compose 管理多容器应用
- 理解 Docker 的网络和数据管理
- 构建和推送镜像
- 使用 Portainer 进行可视化管理