个人总结 docker 常用命令

常用命令

1、镜像操作

1.1、拉取镜像
bash 复制代码
# 直接下载,默认通过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、查看本地镜像
bash 复制代码
docker images -a  # 列出所有本地镜像
1.3、构建自定义镜像
bash 复制代码
docker build -t 自定义镜像名:标签 .  # 在当前目录构建镜像
# 示例:构建名为 myapp:1.0 的镜像
docker build -t myapp:1.0 .

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

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

  2. 本地环境准备

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

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

    bash 复制代码
    docker tag 本地镜像名:标签 DockerHub用户名/目标仓库名:标签

    实操示例:

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

    执行打标签命令:

    bash 复制代码
    docker tag ollama/ollama:latest AAAAAAAA/my_ollama:v1

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

    plaintext 复制代码
    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(已经登陆就忽略这一步)

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

    bash 复制代码
    docker push AAAAAAAA/my_ollama:v1

2、容器操作

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

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

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

3、数据卷(Volume)操作

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

4、网络操作

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

5、Docker Compose(多容器管理)

5.1、创建 docker-compose.yml 文件
yaml 复制代码
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、启动服务
bash 复制代码
docker compose up -d  # 后台启动所有服务
5.3、停止服务
bash 复制代码
docker compose down  # 停止并移除所有服务
5.4、查看服务状态
bash 复制代码
docker compose ps  # 查看服务状态

6、其他常用命令

6.1、查看容器日志
bash 复制代码
docker logs 容器名或ID  # 查看容器日志
docker logs -f 容器名或ID  # 实时跟踪日志
6.2、查看容器资源使用
bash 复制代码
docker stats 容器名或ID  # 查看容器 CPU/内存使用
6.3、导出 / 导入镜像
bash 复制代码
docker save 镜像名:标签 > 镜像文件.tar  # 导出镜像
docker load < 镜像文件.tar  # 导入镜像
6.4、空间清理
bash 复制代码
# 停止并删除所有容器
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          # 确认要删除的卷
相关推荐
极客先躯2 小时前
高级java每日一道面试题-2026年01月19日-实战篇[Docker]-如何配置镜像仓库的垃圾回收 (GC)?
java·运维·docker·容器
日取其半万世不竭3 小时前
low-memory-server-swap-20260601
docker·容器·https
暮云星影3 小时前
个人总结 docker搭建PDF操作工具
docker·容器·pdf
zhoupenghui1683 小时前
AI大模型应用部署之Flask框架使用
运维·python·docker·容器·flask·flask框架
kishu_iOS&AI4 小时前
Mac —— Docker Desktop(Milvus和Redis)部署
redis·docker·milvus
一池秋_4 小时前
chroot-debian一键部署
android·容器·debian
花花少年5 小时前
基于Docker快速部署OneAPI以及统一调用国产大模型
docker·oneapi·deepseek
杨了个杨89825 小时前
Docker简介及安装
运维·docker·容器
IT策士5 小时前
第50篇 k8s之系列总结 + 项目演示与后续扩展
云原生·容器·kubernetes