常用命令

1、镜像操作

1.1、拉取镜像
# 直接下载,默认通过docker-hub
docker pull 镜像名:标签  # 从 Docker Hub 下载镜像
# 示例:拉取 Ubuntu 20.04 镜像
docker pull ubuntu:20.04

# 指定镜像源下载 (临时指定镜像源,设置镜像加速时不需要)
docker pull --registry-mirror=https://registry.docker-cn.com nginx:alpine

标签(Tag):通常表示版本(如 latest、1.0)。

1.2、查看本地镜像
docker images -a  # 列出所有本地镜像
1.3、构建自定义镜像
docker build -t 自定义镜像名:标签 .  # 在当前目录构建镜像
# 示例:构建名为 myapp:1.0 的镜像
docker build -t myapp:1.0 .

前提:当前目录需有 Dockerfile(定义镜像构建步骤)。

1.4、删除镜像
docker rmi IDxxx
1.5、推送镜像到个人 Docker Hub
  1. 注册 Docker Hub 账号

  2. 本地环境准备

    1. 软件安装
    2. 镜像准备
  3. 本地镜像打标签

    Docker 推送镜像时,标签格式必须和 Docker Hub 账号匹配,否则会权限错误或推送失败!

    docker tag 本地镜像名:标签 DockerHub用户名/目标仓库名:标签
    

    实操示例:

    • Docker Hub 用户名:AAAAAAAA
    • 本地镜像:ollama/ollama:latest
    • 想创建的仓库名:my_ollama
    • 标签:v1

    执行打标签命令:

    docker tag ollama/ollama:latest AAAAAAAA/my_ollama:v1
    

    执行后,再用 docker images 查看,会多一个带新标签的镜像:

    REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
    ollama/ollama                 latest    d2c94e258dcb   2 months ago   5.9GB
    AAAAAAAA/my_ollama           v1        d2c94e258dcb   2 months ago   5.9GB  # 新标签镜像
    
  4. 终端登录 Docker Hub(已经登陆就忽略这一步)

    docker login
    
  5. 执行推送命令(用刚才打好的新标签)

    docker push AAAAAAAA/my_ollama:v1
    

2、容器操作

2.1、运行容器
docker run [选项] 镜像名 [命令]
# 示例:运行 Ubuntu 并进入交互式 shell
docker run -it ubuntu:20.04 /bin/bash

# 常用选项:
-d        # 后台运行(detach)
-p 主机端口:容器端口  # 端口映射
-v 主机路径:容器路径  # 挂载卷(数据持久化)
--name 容器名  # 指定容器名称
-e 环境变量=值  # 设置环境变量
2.2、查看运行中的容器
docker ps  # 查看正在运行的容器
docker ps -a  # 查看所有容器(包括已停止的)
2.3、停止 / 启动容器
docker stop 容器名或ID  # 停止运行中的容器
docker start 容器名或ID  # 启动已停止的容器
docker restart 容器名或ID  # 重启容器

# 一键关闭所有运行中的容器
docker stop $(docker ps -q)
2.4、进入容器
docker exec -it 容器名或ID /bin/bash  # 进入运行中的容器
# 示例:进入名为 webapp 的容器
docker exec -it webapp /bin/bash
2.5、删除容器
docker rm 容器名或ID  # 删除已停止的容器
docker rm -f 容器名或ID  # 强制删除运行中的容器(慎用)

3、数据卷(Volume)操作

3.1、创建数据卷
docker volume create 卷名  # 创建命名卷
# 示例:创建名为 mydata 的数据卷
docker volume create mydata
3.2、挂载数据卷到容器
docker run -v mydata:/app/data 镜像名  # 挂载卷到容器路径
3.3、查看数据卷
docker volume ls  # 列出所有数据卷
docker volume inspect 卷名  # 查看卷详情
3.4、删除数据卷
docker volume rm 卷名  # 删除未使用的数据卷
docker volume prune  # 删除所有未使用的数据卷

4、网络操作

4.1、查看网络
docker network ls  # 列出所有网络
4.2、创建自定义网络
docker network create 网络名  # 创建桥接网络
# 示例:创建名为 mynet 的网络
docker network create mynet
4.3、运行容器并连接到网络
docker run --network mynet 镜像名  # 连接容器到指定网络

5、Docker Compose(多容器管理)

5.1、创建 docker-compose.yml 文件
version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:
5.2、启动服务
docker compose up -d  # 后台启动所有服务
5.3、停止服务
docker compose down  # 停止并移除所有服务
5.4、查看服务状态
docker compose ps  # 查看服务状态

6、其他常用命令

6.1、查看容器日志
docker logs 容器名或ID  # 查看容器日志
docker logs -f 容器名或ID  # 实时跟踪日志
6.2、查看容器资源使用
docker stats 容器名或ID  # 查看容器 CPU/内存使用
6.3、导出 / 导入镜像
docker save 镜像名:标签 > 镜像文件.tar  # 导出镜像
docker load < 镜像文件.tar  # 导入镜像
6.4、空间清理
# 停止并删除所有容器
docker stop $(docker ps -aq)  # 停止所有运行中的容器
docker rm $(docker ps -aq)    # 删除所有容器

# 删除所有未使用的镜像
docker image prune -a  # 删除所有未被容器使用的镜像(包括悬空镜像)

# 删除所有未使用的卷
docker volume prune  # 删除所有未被容器使用的卷(数据可能丢失!)

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

# 一键清理所有未使用资源(推荐)
docker system prune -a --volumes  # 清理所有未使用的容器、镜像、网络和卷
# -a:删除所有未使用的镜像,而不仅仅是悬空镜像。
# --volumes:同时删除未使用的卷(需谨慎,可能导致数据丢失)。

# 清理特定容器 / 镜像
# 删除指定容器(替换容器ID)
docker rm <容器ID>

# 删除指定镜像(替换镜像ID或名称)
docker rmi <镜像ID或名称>

# 清理 Docker 缓存
# 清理 Docker 构建缓存
docker builder prune

# 清理 Docker 日志文件(可能占用大量空间)
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'

# 清理 Docker 存储驱动(高级)
如果你使用的是 overlay2 存储驱动,可以手动清理残留文件:
# 停止 Docker 服务
sudo systemctl stop docker
# 删除无用的 overlay2 层(谨慎操作!)
sudo rm -rf /var/lib/docker/overlay2/*
# 启动 Docker 服务
sudo systemctl start docker

# 清理后验证
docker ps -a        # 查看容器列表(应无结果)
docker images       # 查看镜像列表
docker volume ls    # 查看卷列表
docker system df    # 查看 Docker 磁盘使用情况

# 删除卷会导致数据永久丢失,请确保重要数据已备份(如数据库、配置文件等)。
# 建议使用命名卷而非匿名卷,便于管理和保留数据。
docker volume create my-data
# 谨慎使用 --volumes:
# 在执行 docker system prune --volumes 前,确认没有需要保留的卷。
# 清理前检查:
docker ps -a              # 确认要删除的容器
docker images -a          # 确认要删除的镜像
docker volume ls          # 确认要删除的卷

更多推荐