1. Docker简介 Docker 是一个开源的应用容器引擎,基于Go语言开发,遵循Apache 2.0协议。它允许开发者将应用及其依赖、配置打包到一个轻量级、可移植的“容器”中,从而实现快速交付、部署和运行 。
核心概念与架构 :
镜像 :只读的模板,用于创建容器,包含运行应用所需的文件系统、依赖和配置。
容器 :镜像的运行实例,是一个隔离的进程空间,拥有自己的文件系统、网络和进程树。
仓库 :集中存放镜像的地方。公共仓库如Docker Hub,私有仓库可自行搭建。
Docker Daemon :常驻后台的守护进程,负责管理镜像、容器、网络和存储卷。
Docker Client :用户通过命令行工具或API与Docker Daemon交互。
Docker Registry :存储镜像的服务器。
与传统虚拟化的区别 :
特性
Docker容器
传统虚拟机
虚拟化级别
操作系统级 ,共享宿主机内核
硬件级 ,每个VM有独立内核
启动速度
秒级甚至毫秒级
分钟级
性能开销
极低 ,接近原生
较高 ,存在Hypervisor开销
磁盘占用
MB级 ,镜像层可共享
GB级 ,每个VM包含完整系统
隔离性
进程级别隔离 ,安全性较弱
完全硬件隔离 ,安全性强
部署密度
高 ,单机可运行数百容器
低 ,资源占用大
2. Docker与Docker Compose安装和设置 Docker安装步骤 Linux系统(以Ubuntu为例) :
卸载旧版本 (如有):
1 sudo apt-get remove docker docker-engine docker.io containerd runc
设置仓库并安装 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo apt-get updatesudo apt-get install ca-certificates curl gnupg lsb-releasesudo mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
验证安装 :
1 sudo docker run hello-world
Windows/macOS :
下载 Docker Desktop 安装包,图形化安装即可。
Docker Desktop集成了Docker引擎、CLI、Compose和图形化管理界面。
Docker Compose安装 Linux系统单独安装 (若未安装docker-compose-plugin):
1 2 3 4 5 6 7 8 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s) -$(uname -m) " -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version
注 :推荐使用Docker官方提供的docker-compose-plugin(通过docker compose命令使用),它是未来的发展方向。
服务管理设置 Linux系统服务管理 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo systemctl start dockersudo systemctl enable dockersudo systemctl status dockersudo systemctl restart dockersudo systemctl stop docker
配置非root用户使用Docker (安全考虑,避免总用sudo):
1 2 3 4 5 6 7 8 sudo usermod -aG docker $USER newgrp docker docker ps
3. Docker常用配置 Docker主要配置文件位于 /etc/docker/daemon.json(Linux),若不存在可手动创建。
日志配置 Docker支持多种日志驱动,控制容器日志的存储和行为:
1 2 3 4 5 6 7 8 9 { "log-driver" : "json-file" , "log-opts" : { "max-size" : "10m" , "max-file" : "3" , "labels" : "production" , "env" : "os,customer" } }
参考配置: sudo curl -L "https://haies.cn/assets/daemon.json" -o /etc/docker/daemon.json
常用日志驱动 :
json-file :默认驱动,日志以JSON格式存储在主机文件系统中。
journald :日志发送到systemd journal。
syslog :日志发送到syslog。
none :不保存任何容器日志。
镜像与数据存储位置配置 默认情况下,Docker镜像、容器等数据存储在 /var/lib/docker。若要更改存储位置:
停止Docker服务 :
1 sudo systemctl stop docker
迁移数据 (如已有数据):
1 sudo rsync -aqxP /var/lib/docker/ /new/path/docker/
修改配置 /etc/docker/daemon.json:
1 2 3 { "data-root" : "/new/path/docker" }
重启服务 :
1 sudo systemctl start docker
镜像加速器配置(针对国内用户) 1 2 3 4 5 6 7 8 { "registry-mirrors" : [ "https://docker.mirrors.ustc.edu.cn" , "https://docker.m.daocloud.io" , "https://hub-mirror.c.163.com" , "https://mirror.ccs.tencentyun.com" ] }
配置生效 :每次修改daemon.json后,需执行 sudo systemctl restart docker。
其他常用配置 1 2 3 4 5 6 7 8 9 10 11 12 13 { "storage-driver" : "overlay2" , "live-restore" : true , "default-ulimits" : { "nofile" : { "Name" : "nofile" , "Hard" : 64000 , "Soft" : 64000 } } , "debug" : false , "experimental" : false }
4. Docker容器管理与编排命令 容器生命周期管理
功能
命令示例
说明
运行容器
docker run -d --name web -p 80:80 nginx:alpine
后台运行,命名,端口映射
列出容器
docker ps -a
查看所有容器(含停止的)
启动/停止
docker start/stop web
启动/停止已有容器
重启容器
docker restart web
重启运行中的容器
暂停/恢复
docker pause/unpause web
暂停/恢复容器进程
删除容器
docker rm -f web
强制删除运行中的容器
进入容器
docker exec -it web sh
交互式进入运行中的容器
查看日志
docker logs -f --tail 100 web
实时查看最后100行日志
镜像管理
功能
命令示例
说明
拉取镜像
docker pull nginx:alpine
拉取指定标签镜像
列出镜像
docker images 或 docker image ls
查看本地镜像
构建镜像
docker build -t myapp:v1 .
使用当前目录Dockerfile构建
推送镜像
docker push myrepo/myapp:v1
推送到镜像仓库
删除镜像
docker rmi nginx:alpine
删除本地镜像
查看历史
docker history nginx:alpine
查看镜像构建历史
保存/加载
docker save -o nginx.tar nginx:alpine docker load -i nginx.tar
导出/导入镜像文件
Docker Compose编排 docker-compose.yml 示例(定义多服务应用):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 version: '3.8' services: web: image: nginx:alpine ports: - "80:80" volumes: - ./html:/usr/share/nginx/html depends_on: - db networks: - app-network db: image: postgres:13 environment: POSTGRES_PASSWORD: secret volumes: - postgres-data:/var/lib/postgresql/data networks: - app-network volumes: postgres-data: networks: app-network: driver: bridge
常用Compose命令 :
功能
命令示例
说明
启动服务
docker-compose -f qsh-compose.yml -p qsh up -d
后台启动所有服务
查看状态
docker-compose ps
查看服务运行状态
查看日志
docker-compose logs -f web
跟踪特定服务日志
停止服务
docker-compose -f qsh-compose.yml -p qsh down
停止并移除所有资源
构建服务
docker-compose build
重新构建服务镜像
执行命令
docker-compose exec db psql -U postgres
在服务容器中执行命令
扩展服务
docker-compose up -d --scale web=3
将web服务扩展到3个实例
compose文件若引用dockerfile,dockerfile内有相对路径引用的外部文件,则相对路径以compose文件为基础。
其他实用命令
功能
命令示例
说明
查看资源使用
docker stats
实时查看容器资源使用情况
查看系统信息
docker info
查看Docker系统信息
数据卷管理
docker volume ls/create/rm
管理数据卷
网络管理
docker network ls/create/rm
管理网络
清理资源
docker system prune -a -f
清理所有未使用的资源
清空json.log 日志文件
sudo sh -c 'find /var/lib/docker/containers -name "*-json.log" -exec truncate -s 0 {} \;'
保留文件,仅情况内容
删除json.log 日志文件
sudo find /var/lib/docker/containers -name "*-json.log" -delete
删除文件
总结 Docker提供了一套完整的容器化解决方案,从镜像构建、容器运行到服务编排。与nerdctl+containerd技术栈相比,Docker更加一体化、开箱即用 ,适合独立应用部署、开发测试环境和中小型项目 。
选择建议 :
如果需要与Kubernetes深度集成、更轻量的运行时、生产级集群 ,选择nerdctl+containerd。
如果是老项目维护 ,或者追求快速上手、一体化体验、独立容器部署或小型项目编排,选择Docker。
掌握Docker的基本概念、安装配置和常用命令,能够显著提升应用部署的效率和一致性,是现代开发运维的必备技能。