Docker使用手册:从入门到进阶实践指南
2025.09.17 10:30浏览量:0简介:本文全面解析Docker核心概念与操作流程,涵盖安装部署、镜像管理、容器运行、网络配置及安全实践,为开发者提供系统化的技术指导与实战案例。
一、Docker核心概念解析
1.1 容器化技术本质
Docker通过Linux内核的Cgroups和Namespaces机制实现进程级隔离,每个容器拥有独立的文件系统、网络栈和资源配额。相较于传统虚拟机,容器启动速度提升90%以上,磁盘占用减少80%,这种轻量化特性使其成为微服务架构的理想载体。
1.2 镜像与容器关系
镜像(Image)是容器的只读模板,采用分层存储结构。以Ubuntu镜像为例,其基础层包含核心系统文件,上层可叠加Apache、MySQL等应用层。通过docker history
命令可查看镜像构建历史,示例输出:
$ docker history ubuntu:22.04
IMAGE CREATED CREATED BY SIZE
ubuntu:22.04 2 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 weeks ago /bin/sh -c set -xe && echo... 11.4MB
二、安装与基础配置
2.1 系统要求验证
- Linux:内核版本≥3.10(
uname -r
查看) - Windows/macOS:需启用Hyper-V或VirtualBox
- 存储空间:建议预留20GB以上用于镜像存储
2.2 安装流程(Ubuntu示例)
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 安装Docker CE
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker run hello-world
2.3 用户组配置
将当前用户加入docker组以避免sudo操作:
sudo usermod -aG docker $USER
newgrp docker # 立即生效
三、镜像管理进阶
3.1 镜像构建最佳实践
Dockerfile优化示例
# 多阶段构建减少镜像体积
FROM golang:1.19 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:3.16
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
此构建方式使最终镜像从1.2GB缩减至15MB。
3.2 镜像仓库管理
私有仓库部署
# 启动本地仓库
docker run -d -p 5000:5000 --restart=always --name registry registry:2
# 标记并推送镜像
docker tag myapp localhost:5000/myapp
docker push localhost:5000/myapp
镜像签名验证
# 生成密钥对
openssl genrsa -aes256 -out private.key 4096
openssl rsa -in private.key -outform PEM -pubout -out public.pem
# 签名镜像
cosign sign --key private.key localhost:5000/myapp:v1
四、容器运行管理
4.1 资源限制配置
# 内存限制示例
docker run -it --memory="512m" --memory-swap="1g" ubuntu bash
# CPU配额控制
docker run -it --cpus=".5" ubuntu bash # 限制使用0.5个CPU核心
4.2 健康检查机制
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
4.3 日志收集方案
JSON文件驱动配置
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
通过/var/lib/docker/containers/<container-id>/<container-id>-json.log
查看日志。
五、网络配置深度解析
5.1 自定义网络拓扑
# 创建自定义网络
docker network create --driver=bridge --subnet=172.28.0.0/16 mynet
# 启动容器并指定网络
docker run -d --name=web --network=mynet nginx
docker run -it --network=mynet alpine ping web
5.2 端口映射策略
- 随机端口:
-P
自动映射所有暴露端口 - 指定端口:
-p 8080:80
将容器80端口映射到主机8080 - 主机模式:
--network=host
共享主机网络栈
六、安全加固方案
6.1 最小化镜像原则
- 使用
scratch
基础镜像构建无OS容器 - 移除不必要的包和文件
- 示例:仅包含静态文件的Nginx镜像
FROM scratch
COPY static/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf
6.2 运行时安全配置
# 启用安全配置
docker run --security-opt="no-new-privileges:true" \
--cap-drop=ALL --cap-add=NET_BIND_SERVICE \
nginx
6.3 漏洞扫描流程
# 使用Docker Scan
docker scan myapp:latest
# 第三方工具集成
trivy image myapp:latest
七、生产环境实践
7.1 编排方案选型
特性 | Docker Compose | Kubernetes |
---|---|---|
适用场景 | 单机多容器 | 集群管理 |
复杂度 | 低 | 高 |
扩展性 | 有限 | 无限 |
7.2 CI/CD集成示例
# GitLab CI示例
build_image:
stage: build
script:
- docker build -t $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHA
deploy_staging:
stage: deploy
script:
- docker stack deploy -c docker-compose.yml myapp
7.3 监控解决方案
Prometheus配置示例
# docker-compose.yml
services:
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
node-exporter:
image: prom/node-exporter
ports:
- "9100:9100"
本手册通过系统化的知识体系与实战案例,帮助开发者掌握Docker从基础操作到生产部署的全流程技能。建议定期更新Docker版本(sudo apt-get upgrade docker-ce
),并关注CVE安全公告及时修复漏洞。实际部署时建议结合具体业务场景进行参数调优,通过docker stats
和docker inspect
命令持续监控容器运行状态。
发表评论
登录后可评论,请前往 登录 或 注册