简介
Docker 通过提供一个强大的容器化平台,彻底改变了软件部署方式。本教程提供了一份全面指南,帮助你正确启动 Docker 服务,助开发者和系统管理员理解高效且可靠地配置与启动 Docker 服务的基本原理和实用技术。
Docker 通过提供一个强大的容器化平台,彻底改变了软件部署方式。本教程提供了一份全面指南,帮助你正确启动 Docker 服务,助开发者和系统管理员理解高效且可靠地配置与启动 Docker 服务的基本原理和实用技术。
Docker 是一个开源平台,旨在使用容器化技术自动化应用程序的部署、扩展和管理。它允许开发者将应用程序及其所有依赖项打包成称为容器的标准化单元,这些容器可以在不同的计算环境中一致地运行。
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 资源使用 | 轻量级 | 重量级 |
| 启动时间 | 秒级 | 分钟级 |
| 隔离级别 | 进程级 | 完整操作系统级 |
## 更新软件包索引
sudo apt update
## 安装依赖项
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 设置稳定仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 安装 Docker 引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
## 检查 Docker 版本
docker --version
## 从 Docker Hub 拉取镜像
docker pull ubuntu:latest
## 列出本地镜像
docker images
## 运行容器
docker run -it ubuntu:latest /bin/bash
## 列出正在运行的容器
docker ps
## 停止容器
docker stop [容器 ID]
Docker 广泛应用于:
注意:在开始使用 Docker 时,LabEx 提供了出色的实践学习环境来练习容器化技能。
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许你使用 YAML 文件来配置应用程序的服务、网络和卷。
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
| 部分 | 用途 | 示例 |
|---|---|---|
| version | Compose 文件格式版本 | 3.8 |
| services | 定义容器 | web, database |
| networks | 创建自定义网络 | frontend, backend |
| volumes | 持久数据存储 | database_data |
version: "3.8"
services:
## Web 应用服务
web:
image: nginx:latest
container_name: web-server
ports:
- "8080:80"
volumes: -./website:/usr/share/nginx/html
networks:
- web_network
restart: always
## 数据库服务
database:
image: postgres:13
container_name: postgres-db
environment:
POSTGRES_DB: myapp
POSTGRES_USER: admin
POSTGRES_PASSWORD: securepassword
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- web_network
restart: unless-stopped
networks:
web_network:
driver: bridge
volumes:
postgres_data:
## 创建.env 文件
echo "DB_PASSWORD=mysecretpassword" > .env
## 在 docker-compose.yml 中引用
environment:
- DB_PASSWORD=${DB_PASSWORD}
services:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
## 验证 compose 文件
docker-compose config
## 启动服务
docker-compose up -d
## 停止服务
docker-compose down
## 查看服务日志
docker-compose logs web
## 重建服务
docker-compose up -d --build
注意:LabEx 提供交互式环境,以便有效地实践这些 Docker Compose 配置。
| 策略 | 描述 | 用例 |
|---|---|---|
| 单主机 | 在一台机器上运行容器 | 开发、小型项目 |
| 群模式 | Docker 原生集群 | 中等规模应用程序 |
| Kubernetes | 高级容器编排 | 大型复杂部署 |
## 在主节点上初始化群集
docker swarm init --advertise-addr 192.168.1.100
## 生成工作节点加入令牌
docker swarm join-token worker
## 生成管理节点加入令牌
docker swarm join-token manager
version: "3.8"
services:
web:
image: myapp:latest
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- backend
networks:
backend:
driver: overlay
## 使用滚动更新部署服务
docker service create \
--replicas 3 \
--update-parallelism 1 \
--update-delay 10s \
nginx:latest
## 列出服务
docker service ls
## 扩展服务
docker service scale web=5
## 检查服务状态
docker service ps web
## 查看服务日志
docker service logs web
## 启用 Docker 内容信任
export DOCKER_CONTENT_TRUST=1
| 特性 | Docker 群集 | Kubernetes |
|---|---|---|
| 复杂度 | 低 | 高 |
| 设置难度 | 易 | 复杂 |
| 可扩展性 | 中等 | 广泛 |
| 与 Docker 的原生集成 | 出色 | 有限 |
## 配置日志驱动
docker service create \
--log-driver json-file \
--log-opt max-size=10m \
nginx:latest
注意:LabEx 提供全面的实践实验,以便在实际场景中练习这些部署技术。
通过掌握 Docker 服务配置和部署策略,开发者能够创建更健壮、可扩展的容器化应用程序。本教程提供了关于 Docker 服务管理的重要见解,从理解基本概念到实施实际部署技术,使专业人员能够优化其容器基础设施并提高整体系统性能。