运维不加班
唯有热爱,方能成就非凡,若无痴迷,岂能窥得天机

Docker高频命令实操手册,值得收藏!

天天被问Docker命令怎么用?索性整理一份,涵盖日常95%的docker操作,都是干货,以后直接甩链接得了!

1. 镜像相关

1.1 拉镜像

# 拉取nginx最新版
docker pull nginx

# 拉指定版本(opsnot推荐)
docker pull nginx:1.24-alpine

1.2 查看本地镜像

docker images

# 只看镜像ID,方便批量操作
docker images -q

1.3 删镜像

# 删单个
docker rmi nginx:latest

# 批量删没用的镜像(慎用!)
docker rmi $(docker images -q)

# opsnot.com提示:删之前先确认下
docker images | grep none

1.4 构建镜像

# 基础构建
docker build -t myapp:v1 .

# 指定Dockerfile路径
docker build -f /path/to/Dockerfile -t myapp:v1 .

# 不用缓存重新构建
docker build --no-cache -t myapp:v1 .

2. 容器操作

2.1 启动容器

# 最简单的启动
docker run nginx

# 后台运行 + 端口映射(常用)
docker run -d -p 8080:80 --name my-nginx nginx

# 挂载数据卷 + 环境变量
docker run -d \
  -p 3306:3306 \
  -v /data/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=opsnot123 \
  --name mysql8 \
  mysql:8.0

# 限制资源使用
docker run -d \
  --memory="512m" \
  --cpus="0.5" \
  -p 8080:80 \
  nginx

2.2 查看容器

# 看运行中的
docker ps

# 看所有容器(包括停止的)
docker ps -a

# 只看容器ID
docker ps -q

# 看最近创建的5个
docker ps -n 5

2.3 停止/启动/重启

# 优雅停止(给10秒处理时间)
docker stop my-nginx

# 强制停止
docker kill my-nginx

# 启动已停止的容器
docker start my-nginx

# 重启
docker restart my-nginx

2.4 删容器

# 删单个(必须先停止)
docker rm my-nginx

# 强制删除运行中的
docker rm -f my-nginx

# 批量删所有停止的容器
docker rm $(docker ps -aq -f status=exited)

# opsnot经验:删之前看清楚
docker ps -a | grep Exited

2.5 进容器调试

# 进容器bash(最常用)
docker exec -it my-nginx bash

# 有些镜像没bash,用sh
docker exec -it my-nginx sh

# 执行单条命令不进容器
docker exec my-nginx ls /etc/nginx

# 以root身份进入
docker exec -u root -it my-nginx bash

3. 日志相关

# 查看日志
docker logs my-nginx

# 实时查看(跟tail -f一样)
docker logs -f my-nginx

# 只看最后100行
docker logs --tail 100 my-nginx

# 带时间戳
docker logs -t my-nginx

# opsnot.com常用组合
docker logs -f --tail 200 my-nginx

4. 数据卷操作

4.1 创建和查看

# 创建数据卷
docker volume create my-data

# 查看所有卷
docker volume ls

# 查看卷详情
docker volume inspect my-data

4.2 删除数据卷

# 删除卷
docker volume rm my-data

# 删除所有未使用的卷(小心!)
docker volume prune

5. 网络相关

5.1 查看网络

# 查看网络
docker network ls

# 查看网络详情
docker network inspect my-network

5.2 管理网络

# 创建自定义网络
docker network create my-network

# 容器连接到网络
docker network connect my-network my-nginx

# 断开网络
docker network disconnect my-network my-nginx

6. 清理命令

6.1 分类清理

# 删除所有停止的容器
docker container prune

# 删除所有未使用的镜像
docker image prune

# 删除所有未使用的卷
docker volume prune

# 删除所有未使用的网络
docker network prune

6.2 一键清理

# 一键清理所有(慎用!)
docker system prune -a

# opsnot推荐:看看能释放多少空间
docker system df

7. 容器资源查看

7.1 实时监控

# 实时查看容器资源使用
docker stats

# 只看指定容器
docker stats my-nginx

7.2 详细信息

# 查看容器详细信息
docker inspect my-nginx

# 查看容器内进程
docker top my-nginx

8. 导入导出

8.1 镜像导入导出

# 导出镜像
docker save -o nginx.tar nginx:latest

# 导入镜像
docker load -i nginx.tar

8.2 容器导入导出

# 导出容器(含修改)
docker export my-nginx > nginx-container.tar

# 导入容器为镜像
docker import nginx-container.tar my-nginx:v1

9. Docker Compose常用

9.1 基础操作

# 启动服务(后台)
docker-compose up -d

# 停止服务
docker-compose down

# 查看服务状态
docker-compose ps

9.2 日志和重启

# 查看服务日志
docker-compose logs -f

# 重启服务
docker-compose restart

# 只重启某个服务
docker-compose restart nginx

# 构建并启动
docker-compose up -d --build

10. 实用技巧

10.1 快速清理脚本

#!/bin/bash
# opsnot清理脚本
echo "停止所有容器..."
docker stop $(docker ps -q)

echo "删除所有容器..."
docker rm $(docker ps -aq)

echo "清理未使用的镜像..."
docker image prune -a -f

echo "清理完成!"
docker system df

10.2 查看容器IP

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx

10.3 复制文件

# 从容器复制到宿主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

# 从宿主机复制到容器
docker cp ./nginx.conf my-nginx:/etc/nginx/nginx.conf

10.4 限制日志大小

# 启动时设置
docker run -d \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

11. 排错命令

11.1 日志排查

# 查看容器启动失败原因
docker logs container_name

# 查看容器退出状态码
docker ps -a | grep container_name

11.2 网络和端口

# 查看容器占用的端口
docker port container_name

# 进入容器排查(容器运行中)
docker exec -it container_name bash

11.3 系统信息

# 查看Docker版本信息
docker version

# 查看Docker系统信息
docker info

基本上常用的就这些,遇到问题先google,别动不动就删容器重来。记住:先查日志,再看配置,最后才重启。

有问题留言,我看到会回。

本文由 opsnot.com 整理,转载请注明出处