📦 一、容器生命周期管理
命令 | 参数说明 | 示例 |
---|---|---|
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 限制内存 |
📝 附:组合命令示例
bash
# 批量停止所有容器
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