📦 一、容器生命周期管理
命令 | 参数说明 | 示例 |
---|---|---|
docker run 创建并启动容器 |
-d 后台运行-p 宿主机:容器 端口映射-v 宿主机:容器 卷挂载--name 命名容器--rm 退出后自动删除 |
docker run -d -p 8080:80 --name nginx nginx:latest |
docker start/stop/restart 启停容器 |
-a 附加输出流-t 秒数 超时停止 |
docker restart -t 10 my_container |
docker rm 删除容器 |
-f 强制删除运行中容器-v 同时删除卷 |
docker rm -fv old_container |
docker exec 执行命令 |
-it 交互模式-e VAR=value 设置环境变量 |
docker exec -it redis redis-cli |
️🪞 二、镜像操作
命令 | 说明 | 示例 |
---|---|---|
docker build 构建镜像 |
-t 名称:标签 指定标签--no-cache 禁用缓存 |
docker build -t myapp:v1 . |
docker pull/push 拉取/推送镜像 |
-a 拉取所有版本--disable-content-trust 跳过验证 |
docker push registry.mycorp.com/app:v2 |
docker images 列出镜像 |
-q 只显示ID--digests 显示摘要 |
docker images --filter "dangling=false" |
docker rmi 删除镜像 |
-f 强制删除--no-prune 保留父层 |
docker rmi $(docker images -q "temp_*") |
📊 三、监控与日志
命令 | 关键参数 | 使用场景 |
---|---|---|
docker ps |
-a 显示所有容器-l 最新容器-s 显示大小 |
docker ps -f "status=running" |
docker logs |
-f 实时跟踪--tail N 末尾N行-t 显示时间戳 |
docker logs -f --until=2m app |
docker stats |
--no-stream 单次输出--format 自定义格式 |
docker stats --format "{{.Container}} {{.CPUPerc}}" |
docker top |
无参数 | 查看容器进程树:docker top nginx |
🌐 四、网络管理
命令 | 功能 | 示例 |
---|---|---|
docker network create |
创建网络--subnet 指定子网--driver 驱动类型 |
docker network create --subnet=172.20.0.0/24 mynet |
docker network connect |
容器加入网络--ip 指定IP |
docker network connect --ip 172.20.0.5 mynet web |
docker network inspect |
查看网络详情 | docker network inspect -f '{{.IPAM.Config}}' bridge |
💾 五、数据卷管理
命令 | 说明 | 实战技巧 |
---|---|---|
docker volume create |
创建具名卷--driver 指定驱动 |
docker volume create --opt type=nfs app_data |
docker volume ls |
列出卷-q 仅显示名称 |
清理未使用卷:docker volume prune |
docker cp |
宿主机⇄容器文件复制 | docker cp config.yml app:/etc/app/ |
🛠️ 六、系统维护
命令 | 用途 | 重要参数 |
---|---|---|
docker system prune |
清理资源 | -a 删除未使用镜像--volumes 删除卷 |
docker info |
显示系统信息 | -f json 输出JSON格式 |
docker update |
更新容器配置 | --cpus 2 限制CPU--memory 512m 限制内存 |
📝 附:组合命令示例
# 批量停止所有容器
docker stop $(docker ps -q)
# 构建镜像并推送到仓库
docker build -t myrepo/app:v3 . && docker push myrepo/app:v3
# 备份MySQL数据到宿主机
docker run --rm -v mysql_data:/volume -v $PWD:/backup alpine tar czf /backup/mysql-$(date +%Y%m%d).tar.gz /volume
⚠️ 七、安全最佳实践
- 非root用户运行:
docker run --user 1000:1000 python
- 只读文件系统:
docker run --read-only -v /tmp:/tmp app
- 资源限制:
docker run --cpus=1.5 --memory=1g app
- 扫描漏洞:
docker scan nginx:latest
完整文档:Docker Official Docs