常用命令
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
-
本地环境准备
- 软件安装
- 镜像准备
-
本地镜像打标签
Docker 推送镜像时,标签格式必须和
Docker Hub账号匹配,否则会权限错误或推送失败!bashdocker tag 本地镜像名:标签 DockerHub用户名/目标仓库名:标签实操示例:
- Docker Hub 用户名:
AAAAAAAA - 本地镜像:
ollama/ollama:latest - 想创建的仓库名:
my_ollama - 标签:
v1
执行打标签命令:
bashdocker tag ollama/ollama:latest AAAAAAAA/my_ollama:v1执行后,再用
docker images查看,会多一个带新标签的镜像:plaintextREPOSITORY TAG IMAGE ID CREATED SIZE ollama/ollama latest d2c94e258dcb 2 months ago 5.9GB AAAAAAAA/my_ollama v1 d2c94e258dcb 2 months ago 5.9GB # 新标签镜像 - Docker Hub 用户名:
-
终端登录
Docker Hub(已经登陆就忽略这一步)bashdocker login -
执行推送命令(用刚才打好的新标签)
bashdocker 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 # 确认要删除的卷