docker一点小记录
Docker 基础使用
1. Docker 组件
Docker 主要由以下三个核心组件组成:
- 镜像(Image):类似于软件的 蓝图,定义了容器运行所需的环境。
- 容器(Container):基于镜像创建的 实例,可以运行应用。
- 引擎(Engine):Docker 的 核心管理组件,负责容器的创建、运行、管理等。
2. 如何构建镜像(Blueprint)
- 编写
Dockerfile
定义镜像构建过程。 - 构建镜像:
1
docker build -t my_image .
- 发布镜像:
- 登录 Docker Hub:
1
docker login
- 推送镜像:
1
docker push my_image
- 登录 Docker Hub:
- 使用镜像:
- 运行容器:
1
docker run -d --name my_container my_image
- 运行容器:
使用 Docker 执行 CI/CD
Docker 可与 Jenkins、GitHub Actions 结合使用,实现 CI/CD:
- Jenkins + Docker:用于企业级 CI/CD 自动化部署。
- GitHub Actions(适用于个人小项目/免费方案)。
3. 查看容器日志
使用 docker logs
命令查看容器日志:
1 | docker logs my_container |
支持多种日志模式:
1 | docker logs -f my_container # 持续查看日志(实时刷新) |
4. Docker 数据卷(Volume)
Docker 数据卷 主要用于持久化存储数据,容器销毁时数据不会丢失。
1. 创建数据卷
1 | docker volume create my_data |
2. 运行容器并挂载数据卷
1 | docker run -d --name my_container -v my_data:/app/data nginx |
3. 多个容器共享数据卷
1 | docker run -d --name container1 -v my_data:/app/data nginx |
4. 查看数据卷信息
1 | docker volume inspect my_data |
5. Docker 网络
Docker 提供多种 网络模式,用于管理容器间的通信:
1. Bridge(桥接模式)
- 默认模式,适用于多个容器之间的通信。
- 在相同桥接网络的容器可以通过容器名互相访问。
- 创建桥接网络并将容器连接到该网络:
1
2
3docker network create my_bridge
docker run -d --name container1 --network my_bridge_network nginx
docker run -d --name container2 --network my_bridge - 使用 Docker Compose 可以自动创建共享网络,提供基础的服务发现功能。
2. Host(主机模式)
- 容器直接使用 宿主机的网络,不做隔离,具有更高的网络性能。
3. None(无网络)
- 容器没有任何网络连接,适用于需要完全隔离的环境。
4. Overlay 网络
- 用于 Docker Swarm 集群,使多个主机上的容器可相互通信。
5. Macvlan 模式
- 允许容器直接与宿主机的网络通信,适用于需要独立 IP 地址 的场景。
6. 如何优化 Docker 启动时间
- 使用较小的基础镜像(如
alpine
代替ubuntu
)。 - 利用构建缓存:避免每次
docker build
都从头开始构建。 - 减少容器层数:使用多阶段构建来减少镜像大小。
- 本地缓存镜像:
1
docker pull my_image
- 优化应用启动方式:如 多阶段构建,减少不必要的运行时依赖。
6. 使用 docker-compose
docker-compose
允许用 YAML 配置文件 定义多个容器,并通过一个命令启动所有容器:
- 编写
docker-compose.yml
文件:1
2
3
4
5
6
7
8
9
10version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root - 使用
docker-compose
启动容器:1
docker-compose up -d
6. 使用多阶段构建优化镜像体积
多阶段构建可减少最终镜像的大小:
1 | # 第一阶段:构建应用 |
- 第一阶段:使用完整的 Golang 环境构建二进制文件。
- 第二阶段:使用
alpine
作为基础镜像,仅复制最终生成的二进制文件,减少体积。
6. Docker Swarm(集群)
Docker Swarm 是 Docker 官方提供的 轻量级容器编排工具:
- 允许将多个 Docker 主机集合成一个虚拟 Docker 主机。
- 适用于 轻量级的集群管理,相比 Kubernetes 更加简单易用。
7. 总结
- Docker 提供了镜像、容器、网络等组件,简化应用的打包、分发、部署。
- 通过 Dockerfile 构建自定义镜像,并使用 Docker Hub 分发。
- 利用 Docker + CI/CD 工具(如 Jenkins、GitHub Actions),可实现自动化部署。
- 通过 Docker Compose 快速启动多容器应用,简化管理。
- 使用 多阶段构建 可 优化镜像体积,提高拉取与启动速度。
- 优化启动时间 可以通过:
- 选择较小的基础镜像。
- 减少不必要的层数。
- 使用本地缓存提高构建效率。
评论