Docker 日常命令速查表
镜像管理
搜索镜像
docker search 镜像名 # 搜索镜像
docker search --limit 5 nginx # 限制搜索结果数量
拉取镜像
docker pull 镜像名:标签 # 拉取指定版本镜像
docker pull nginx:latest # 拉取最新版本
docker pull nginx:1.21 # 拉取指定版本
查看镜像
docker images # 查看所有镜像
docker image ls # 查看所有镜像(新版本命令)
docker images -a # 查看所有镜像(包括中间层)
docker images --filter "dangling=true" # 查看悬空镜像
删除镜像
docker rmi 镜像ID # 删除指定镜像
docker rmi 镜像名:标签 # 删除指定版本镜像
docker rmi -f 镜像ID # 强制删除镜像
docker image prune # 删除悬空镜像
docker image prune -a # 删除所有未使用的镜像
构建镜像
docker build -t 镜像名:标签 . # 构建镜像(当前目录)
docker build -t myapp:v1.0 -f Dockerfile.dev . # 指定Dockerfile
容器管理
运行容器
# 基本运行
docker run 镜像名:标签 # 运行容器
docker run -d 镜像名:标签 # 后台运行容器
docker run -it 镜像名:标签 # 交互式运行容器
# 端口映射
docker run -p 8080:80 nginx # 本地8080端口映射到容器80端口
docker run -P nginx # 随机端口映射
# 目录挂载
docker run -v /宿主机路径:/容器路径 镜像名
docker run -v $(pwd):/app -w /app myapp # 挂载当前目录并设为工作目录
# 环境变量
docker run -e 环境变量名=值 镜像名
docker run -e NODE_ENV=production node-app
# 容器命名
docker run --name 容器名 镜像名
docker run --name my-nginx nginx
# 自动重启
docker run --restart=always nginx
docker run --restart=on-failure:3 nginx # 最多重启3次
查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器(包括停止的)
docker ps -q # 只显示容器ID
docker ps --format "table {{.Names}}\t{{.Status}}" # 格式化输出
停止容器
docker stop 容器ID # 停止容器
docker stop 容器名 # 通过容器名停止
docker kill 容器ID # 强制停止容器
docker stop $(docker ps -q) # 停止所有运行的容器
启动容器
docker start 容器ID # 启动已停止的容器
docker restart 容器ID # 重启容器
docker pause 容器ID # 暂停容器
docker unpause 容器ID # 恢复暂停的容器
删除容器
docker rm 容器ID # 删除已停止的容器
docker rm -f 容器ID # 强制删除运行中的容器
docker container prune # 删除所有已停止的容器
docker rm $(docker ps -aq) # 删除所有容器
容器操作
进入容器
docker exec -it 容器ID /bin/bash # 进入容器bash
docker exec -it 容器ID sh # 进入容器sh
docker exec 容器ID 命令 # 在容器中执行命令
docker exec -it mynginx /bin/bash # 通过容器名进入
查看日志
docker logs 容器ID # 查看容器日志
docker logs -f 容器ID # 实时跟踪日志
docker logs --tail 100 容器ID # 查看最后100行日志
docker logs -t 容器ID # 显示时间戳
docker logs 容器ID 2>&1 | grep "error" # 搜索日志中的错误
查看统计信息
docker stats # 查看所有容器资源使用情况
docker stats 容器ID # 查看指定容器资源使用
docker stats --no-stream # 不持续更新
docker top 容器ID # 查看容器中运行的进程
文件操作
# 复制文件到容器
docker cp 宿主机文件 容器ID:容器内路径
docker cp ./app.js mycontainer:/app/
# 从容器复制文件
docker cp 容器ID:容器内文件 宿主机路径
docker cp mycontainer:/app/app.js ./
# 查看文件变化
docker diff 容器ID # 查看容器文件系统变化
网络管理
查看网络
docker network ls # 查看所有网络
docker network inspect 网络名 # 查看网络详细信息
创建网络
docker network create 网络名 # 创建网络
docker network create --driver bridge mynet # 创建桥接网络
docker network create --subnet=192.168.1.0/24 mynet # 指定子网
连接容器到网络
docker network connect 网络名 容器名 # 连接容器到网络
docker network disconnect 网络名 容器名 # 断开容器与网络连接
删除网络
docker network rm 网络名 # 删除网络
docker network prune # 删除未使用的网络
数据卷管理
查看数据卷
docker volume ls # 查看所有数据卷
docker volume inspect 卷名 # 查看数据卷详细信息
创建数据卷
docker volume create 卷名 # 创建数据卷
docker volume create --name mydata # 创建命名数据卷
删除数据卷
docker volume rm 卷名 # 删除数据卷
docker volume prune # 删除未使用的数据卷
使用数据卷
docker run -v 卷名:容器内路径 镜像名
docker run -v mydata:/data nginx
系统管理
系统信息
docker version # 查看Docker版本信息
docker info # 查看Docker系统信息
docker system df # 查看磁盘使用情况
docker system events # 查看系统事件
清理系统
docker system prune # 清理未使用的容器、网络、镜像
docker system prune -a # 清理所有未使用的资源
docker system prune --volumes # 清理包括数据卷在内的所有资源
常用组合命令
一键清理
# 清理停止的容器、悬空镜像、未使用的网络和数据卷
docker system prune -a --volumes
# 清理所有未使用的镜像
docker image prune -a
批量操作
# 停止所有容器
docker stop $(docker ps -q)
# 删除所有已停止的容器
docker rm $(docker ps -aq --filter status=exited)
# 删除所有悬空镜像
docker rmi $(docker images -f "dangling=true" -q)
实用脚本
# 查看容器资源使用情况
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 查看容器健康状态
docker ps --format "table {{.Names}}\t{{.Status}}"
# 导出镜像
docker save -o myapp.tar myapp:latest
# 导入镜像
docker load -i myapp.tar
Docker Compose 常用命令
服务管理
docker-compose up -d # 后台启动所有服务
docker-compose down # 停止并删除所有服务
docker-compose down -v # 停止并删除服务及数据卷
docker-compose restart # 重启所有服务
docker-compose restart service_name # 重启指定服务
查看状态
docker-compose ps # 查看服务状态
docker-compose logs # 查看所有服务日志
docker-compose logs -f service_name # 实时查看指定服务日志
构建和更新
docker-compose build # 构建服务镜像
docker-compose up --build # 构建并启动服务
docker-compose pull # 拉取最新镜像
故障排除
容器启动失败
# 查看容器详细错误信息
docker inspect 容器ID | grep -A 10 "Error"
# 查看容器启动日志
docker logs 容器ID
端口冲突
# 查看端口占用情况
netstat -tulpn | grep 端口号
lsof -i :端口号
磁盘空间不足
# 清理Docker系统
docker system prune -a
# 查看各部分占用情况
docker system df
性能优化
镜像优化
# 使用多阶段构建
# 在Dockerfile中使用 .dockerignore
# 合并RUN命令
# 使用alpine基础镜像
容器优化
# 限制容器资源使用
docker run --memory="512m" --cpus="1.0" nginx
# 使用健康检查
docker run --health-cmd="curl -f http://localhost/" nginx