【容器】Docker 常用命令大全
1. 镜像管理命令
1.1 镜像基本操作
# 查看本地镜像列表
docker images
docker image ls
# 查看所有镜像(包括中间层镜像)
docker images -a
# 查看镜像ID
docker images -q
# 搜索 Docker Hub 上的镜像
docker search <image-name>
docker search nginx --limit 10
# 拉取镜像
docker pull <image-name>:<tag>
docker pull nginx:latest
docker pull ubuntu:20.04
# 推送镜像到仓库
docker push <username>/<image-name>:<tag>
# 删除镜像
docker rmi <image-id-or-name>
docker rmi nginx:latest
# 强制删除镜像(即使有容器在使用)
docker rmi -f <image-id>
# 删除所有未使用的镜像
docker image prune
docker image prune -a # 删除所有未使用的镜像,包括悬空镜像
# 查看镜像历史
docker history <image-name>
1.2 镜像构建和导出
# 构建镜像(在当前目录查找 Dockerfile)
docker build .
docker build -t my-app:latest .
# 构建镜像并指定 Dockerfile 路径
docker build -f Dockerfile.dev -t my-app:dev .
# 不缓存构建
docker build --no-cache -t my-app:latest .
# 保存镜像为 tar 文件
docker save -o my-image.tar <image-name>
docker save my-app:latest > my-app.tar
# 从 tar 文件加载镜像
docker load -i my-image.tar
docker load < my-app.tar
# 导出容器文件系统
docker export <container-id> > container.tar
# 导入容器文件系统为镜像
docker import container.tar my-image:latest
# 查看镜像详细信息
docker image inspect <image-name>
2. 容器管理命令
2.1 容器生命周期管理
# 运行容器
docker run <image-name>
docker run -d nginx:latest # 后台运行
docker run -it ubuntu:20.04 /bin/bash # 交互式运行
# 运行容器并设置名称
docker run --name my-container nginx:latest
# 运行容器并映射端口
docker run -p 8080:80 nginx:latest
docker run -p 80:80 -p 443:443 nginx:latest
# 运行容器并挂载卷
docker run -v /host/path:/container/path nginx:latest
docker run -v my-volume:/container/path nginx:latest
# 运行容器并设置环境变量
docker run -e ENV_VAR=value nginx:latest
docker run --env-file .env nginx:latest
# 查看运行中的容器
docker ps
docker container ls
# 查看所有容器(包括停止的)
docker ps -a
docker ps --all
# 查看最近创建的容器
docker ps -l
# 查看容器大小
docker ps -s
# 停止容器
docker stop <container-id-or-name>
docker stop my-container
# 强制停止容器
docker kill <container-id-or-name>
# 启动已停止的容器
docker start <container-id-or-name>
# 重启容器
docker restart <container-id-or-name>
# 暂停容器
docker pause <container-id-or-name>
# 恢复暂停的容器
docker unpause <container-id-or-name>
# 删除容器
docker rm <container-id-or-name>
# 强制删除运行中的容器
docker rm -f <container-id-or-name>
# 删除所有停止的容器
docker container prune
docker rm $(docker ps -aq) # 删除所有容器
# 查看容器日志
docker logs <container-id-or-name>
docker logs -f my-container # 实时查看日志
docker logs --tail 100 my-container # 查看最后100行
docker logs --since 2023-01-01T00:00:00 my-container
# 查看容器资源使用情况
docker stats <container-id-or-name>
docker stats # 查看所有容器资源使用
2.2 容器交互和调试
# 进入运行中的容器
docker exec -it <container-id-or-name> /bin/bash
docker exec -it my-container /bin/sh
# 在容器中执行命令
docker exec <container-id> ls -la
docker exec my-container pwd
# 查看容器详细信息
docker inspect <container-id-or-name>
# 查看容器进程
docker top <container-id-or-name>
# 复制文件到容器
docker cp localfile.txt <container-id>:/path/in/container/
# 从容器复制文件到本地
docker cp <container-id>:/path/in/container/file.txt ./
# 重命名容器
docker rename old-name new-name
# 更新容器配置
docker update --memory 512m <container-id>
docker update --restart=always <container-id>
3. 网络管理命令
3.1 网络基本操作
# 查看网络列表
docker network ls
# 创建网络
docker network create my-network
docker network create --driver bridge my-bridge-network
# 查看网络详细信息
docker network inspect my-network
# 连接容器到网络
docker network connect my-network <container-id>
# 断开容器与网络的连接
docker network disconnect my-network <container-id>
# 删除网络
docker network rm my-network
# 删除所有未使用的网络
docker network prune
# 查看容器网络配置
docker inspect <container-id> | grep -A 10 "NetworkSettings"
3.2 网络类型和配置
# 创建桥接网络
docker network create --driver bridge --subnet=192.168.100.0/24 my-bridge
# 创建 overlay 网络(Swarm 模式)
docker network create -d overlay my-overlay
# 创建 macvlan 网络
docker network create -d macvlan --subnet=192.168.1.0/24 -o parent=eth0 my-macvlan
# 端口映射检查
docker port <container-id>
4. 数据卷管理命令
4.1 卷操作
# 查看卷列表
docker volume ls
# 创建卷
docker volume create my-volume
# 查看卷详细信息
docker volume inspect my-volume
# 删除卷
docker volume rm my-volume
# 删除所有未使用的卷
docker volume prune
# 备份卷数据
docker run --rm -v my-volume:/source -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz -C /source ./
4.2 绑定挂载
# 使用绑定挂载
docker run -v /host/path:/container/path nginx:latest
# 只读挂载
docker run -v /host/path:/container/path:ro nginx:latest
# 使用卷挂载
docker run -v my-volume:/container/path nginx:latest
5. Docker Compose 命令
5.1 Compose 基本操作
# 启动服务(后台运行)
docker-compose up -d
# 启动服务并构建镜像
docker-compose up --build
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs
docker-compose logs -f # 实时查看
docker-compose logs service-name # 查看特定服务
# 停止服务
docker-compose down
# 停止服务并删除卷
docker-compose down -v
# 停止服务并删除镜像
docker-compose down --rmi all
# 重启服务
docker-compose restart
# 缩放服务实例数
docker-compose up --scale web=3 --scale db=2
# 执行命令
docker-compose exec service-name bash
docker-compose exec web python manage.py migrate
# 查看服务配置
docker-compose config
5.2 Compose 管理命令
# 构建服务镜像
docker-compose build
# 拉取服务镜像
docker-compose pull
# 查看运行中的进程
docker-compose top
# 暂停服务
docker-compose pause
# 恢复服务
docker-compose unpause
# 查看服务资源使用
docker-compose stats
6. Docker Swarm 命令
6.1 Swarm 集群管理
# 初始化 Swarm
docker swarm init
# 查看 Swarm 状态
docker node ls
docker info | grep -A 10 Swarm
# 加入 Swarm 集群
docker swarm join --token <token> <manager-ip>:2377
# 查看 Swarm 令牌
docker swarm join-token manager
docker swarm join-token worker
# 离开 Swarm
docker swarm leave
# 查看服务列表
docker service ls
# 创建服务
docker service create --name web --replicas 3 -p 80:80 nginx:latest
# 扩展服务
docker service scale web=5
# 更新服务
docker service update --image nginx:1.20 web
# 查看服务详情
docker service ps web
docker service logs web
# 删除服务
docker service rm web
7. 系统管理和清理命令
7.1 系统信息
# 查看 Docker 系统信息
docker system info
docker info
# 查看磁盘使用情况
docker system df
docker system df -v # 详细查看
# 查看 Docker 版本
docker version
docker --version
# 查看 Docker 守护进程状态
systemctl status docker
sudo service docker status
7.2 系统清理
# 删除所有停止的容器、未使用的网络、悬空镜像
docker system prune
# 删除所有未使用的资源
docker system prune -a
# 删除所有悬空镜像
docker image prune
# 删除所有未使用的卷
docker volume prune
# 删除所有未使用的网络
docker network prune
# 删除所有构建缓存
docker builder prune
8. 日志和监控命令
8.1 日志管理
# 查看容器日志
docker logs <container-id>
# 实时查看日志
docker logs -f <container-id>
# 查看指定时间后的日志
docker logs --since 2023-01-01T00:00:00 <container-id>
# 查看最近日志
docker logs --tail 100 <container-id>
# 查看日志时间戳
docker logs -t <container-id>
# 查看多个容器的日志
docker-compose logs -f service1 service2
8.2 监控和统计
# 实时监控容器资源使用
docker stats
# 监控特定容器
docker stats <container-id>
# 不流式输出,只显示一次
docker stats --no-stream
# 查看容器进程
docker top <container-id>
# 查看容器事件
docker events
docker events --since 2023-01-01T00:00:00
9. 安全相关命令
9.1 安全扫描和检查
# 扫描镜像漏洞
docker scan <image-name>
docker scan nginx:latest
# 查看镜像安全详情
docker scout <image-name>
# 检查容器安全配置
docker container diff <container-id>
# 查看镜像构建历史
docker history <image-name>
# 检查镜像签名
docker trust inspect <image-name>
10. 实用脚本和别名
10.1 常用别名(添加到 ~/.bashrc 或 ~/.zshrc)
# Docker 别名
alias d='docker'
alias di='docker images'
alias dps='docker ps'
alias dpsa='docker ps -a'
alias drm='docker rm'
alias drmi='docker rmi'
alias dstop='docker stop'
alias dstart='docker start'
alias drestart='docker restart'
alias dlogs='docker logs -f'
alias dexec='docker exec -it'
alias dstats='docker stats'
# Docker Compose 别名
alias dc='docker-compose'
alias dcup='docker-compose up -d'
alias dcdown='docker-compose down'
alias dclogs='docker-compose logs -f'
alias dcexec='docker-compose exec'
alias dcps='docker-compose ps'
# 清理命令别名
alias dclean='docker system prune -f'
alias dcleani='docker image prune -f'
alias dcleanv='docker volume prune -f'
alias dcleann='docker network prune -f'
10.2 实用脚本
# 批量停止所有容器
docker stop $(docker ps -aq)
# 批量删除所有容器
docker rm $(docker ps -aq)
# 批量删除所有镜像
docker rmi $(docker images -q)
# 进入最近创建的容器
docker exec -it $(docker ps -ql) bash
# 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id>
# 备份所有镜像
docker save $(docker images -q) -o all-images.tar
# 查看容器资源限制
docker inspect <container-id> | grep -A 5 -B 5 "Memory\|Cpu"
11. 高级调试命令
11.1 容器调试
# 在容器中运行调试工具
docker run -it --rm --net container:<container-id> nicolaka/netshoot
# 检查容器网络连接
docker run -it --rm --net container:<container-id> appropriate/curl curl http://localhost
# 检查容器DNS
docker run -it --rm --net container:<container-id> busybox nslookup google.com
# 性能分析
docker run -it --rm --pid container:<container-id> alpine htop
11.2 构建优化
# 多阶段构建
docker build --target build-stage -t my-app:build .
# 使用构建缓存
docker build --cache-from my-app:latest -t my-app:latest .
# 构建参数
docker build --build-arg ENV=production -t my-app:prod .
12. 仓库管理命令
12.1 镜像仓库操作
# 登录到 Docker Hub
docker login
# 登录到私有仓库
docker login myregistry.com:5000
# 登出
docker logout
# 给镜像打标签
docker tag local-image:tag username/repository:tag
# 推送镜像
docker push username/repository:tag
# 从仓库拉取镜像
docker pull username/repository:tag
# 搜索私有仓库镜像
docker search myregistry.com:5000/nginx
实用技巧和最佳实践
- 使用 .dockerignore 文件:
# 忽略不必要的文件,加速构建
node_modules
.git
*.log
.DS_Store
- 多阶段构建示例:
# 构建阶段
FROM node:16 as builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# 生产阶段
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
- 健康检查:
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/health || exit 1
- 资源限制:
docker run -d --memory=512m --cpus=1.5 nginx:latest
这个 Docker 命令大全涵盖了日常开发、测试和部署中的大部分场景。建议根据实际需求掌握相关命令,并结合 Dockerfile 最佳实践来使用。
本文来自博客园,作者:NeoLshu,转载请注明原文链接:https://www.cnblogs.com/neolshu/p/19513688

浙公网安备 33010602011771号