常用命令1、镜像操作1.1、拉取镜像# 直接下载默认通过docker-hubdockerpull 镜像名:标签# 从 Docker Hub 下载镜像# 示例拉取 Ubuntu 20.04 镜像dockerpull ubuntu:20.04# 指定镜像源下载 (临时指定镜像源设置镜像加速时不需要)dockerpull --registry-mirrorhttps://registry.docker-cn.com nginx:alpine标签Tag通常表示版本如 latest、1.0。1.2、查看本地镜像dockerimages-a# 列出所有本地镜像1.3、构建自定义镜像dockerbuild-t自定义镜像名:标签.# 在当前目录构建镜像# 示例构建名为 myapp:1.0 的镜像dockerbuild-tmyapp:1.0.前提当前目录需有 Dockerfile定义镜像构建步骤。1.4、删除镜像dockerrmi IDxxx1.5、推送镜像到个人Docker Hub注册Docker Hub账号本地环境准备软件安装镜像准备本地镜像打标签Docker 推送镜像时标签格式必须和Docker Hub账号匹配否则会权限错误或推送失败dockertag 本地镜像名:标签 DockerHub用户名/目标仓库名:标签实操示例Docker Hub 用户名AAAAAAAA本地镜像ollama/ollama:latest想创建的仓库名my_ollama标签v1执行打标签命令dockertag 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 # 新标签镜像终端登录Docker Hub已经登陆就忽略这一步dockerlogin执行推送命令用刚才打好的新标签dockerpush AAAAAAAA/my_ollama:v12、容器操作2.1、运行容器dockerrun[选项]镜像名[命令]# 示例运行 Ubuntu 并进入交互式 shelldockerrun-itubuntu:20.04 /bin/bash# 常用选项-d# 后台运行detach-p主机端口:容器端口# 端口映射-v主机路径:容器路径# 挂载卷数据持久化--name容器名# 指定容器名称-e环境变量值# 设置环境变量2.2、查看运行中的容器dockerps# 查看正在运行的容器dockerps-a# 查看所有容器包括已停止的2.3、停止 / 启动容器dockerstop 容器名或ID# 停止运行中的容器dockerstart 容器名或ID# 启动已停止的容器dockerrestart 容器名或ID# 重启容器# 一键关闭所有运行中的容器dockerstop$(dockerps-q)2.4、进入容器dockerexec-it容器名或ID /bin/bash# 进入运行中的容器# 示例进入名为 webapp 的容器dockerexec-itwebapp /bin/bash2.5、删除容器dockerrm容器名或ID# 删除已停止的容器dockerrm-f容器名或ID# 强制删除运行中的容器慎用3、数据卷Volume操作3.1、创建数据卷dockervolume create 卷名# 创建命名卷# 示例创建名为 mydata 的数据卷dockervolume create mydata3.2、挂载数据卷到容器dockerrun-vmydata:/app/data 镜像名# 挂载卷到容器路径3.3、查看数据卷dockervolumels# 列出所有数据卷dockervolume inspect 卷名# 查看卷详情3.4、删除数据卷dockervolumerm卷名# 删除未使用的数据卷dockervolume prune# 删除所有未使用的数据卷4、网络操作4.1、查看网络dockernetworkls# 列出所有网络4.2、创建自定义网络dockernetwork create 网络名# 创建桥接网络# 示例创建名为 mynet 的网络dockernetwork create mynet4.3、运行容器并连接到网络dockerrun--networkmynet 镜像名# 连接容器到指定网络5、Docker Compose多容器管理5.1、创建 docker-compose.yml 文件version:3services:web:image:nginx:alpineports:-80:80volumes:-./html:/usr/share/nginx/htmldb:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:passwordvolumes:-mysql-data:/var/lib/mysqlvolumes:mysql-data:5.2、启动服务dockercompose up-d# 后台启动所有服务5.3、停止服务dockercompose down# 停止并移除所有服务5.4、查看服务状态dockercomposeps# 查看服务状态6、其他常用命令6.1、查看容器日志dockerlogs 容器名或ID# 查看容器日志dockerlogs-f容器名或ID# 实时跟踪日志6.2、查看容器资源使用dockerstats 容器名或ID# 查看容器 CPU/内存使用6.3、导出 / 导入镜像dockersave 镜像名:标签镜像文件.tar# 导出镜像dockerload镜像文件.tar# 导入镜像6.4、空间清理# 停止并删除所有容器dockerstop$(dockerps-aq)# 停止所有运行中的容器dockerrm$(dockerps-aq)# 删除所有容器# 删除所有未使用的镜像dockerimage prune-a# 删除所有未被容器使用的镜像包括悬空镜像# 删除所有未使用的卷dockervolume prune# 删除所有未被容器使用的卷数据可能丢失# 删除所有未使用的网络dockernetwork prune# 删除所有未被容器使用的网络# 一键清理所有未使用资源推荐dockersystem prune-a--volumes# 清理所有未使用的容器、镜像、网络和卷# -a删除所有未使用的镜像而不仅仅是悬空镜像。# --volumes同时删除未使用的卷需谨慎可能导致数据丢失。# 清理特定容器 / 镜像# 删除指定容器替换容器IDdockerrm容器ID# 删除指定镜像替换镜像ID或名称dockerrmi镜像ID或名称# 清理 Docker 缓存# 清理 Docker 构建缓存dockerbuilder prune# 清理 Docker 日志文件可能占用大量空间sudosh-ctruncate -s 0 /var/lib/docker/containers/*/*-json.log# 清理 Docker 存储驱动高级如果你使用的是 overlay2 存储驱动可以手动清理残留文件# 停止 Docker 服务sudosystemctl stopdocker# 删除无用的 overlay2 层谨慎操作sudorm-rf/var/lib/docker/overlay2/*# 启动 Docker 服务sudosystemctl startdocker# 清理后验证dockerps-a# 查看容器列表应无结果dockerimages# 查看镜像列表dockervolumels# 查看卷列表dockersystemdf# 查看 Docker 磁盘使用情况# 删除卷会导致数据永久丢失请确保重要数据已备份如数据库、配置文件等。# 建议使用命名卷而非匿名卷便于管理和保留数据。dockervolume create my-data# 谨慎使用 --volumes# 在执行 docker system prune --volumes 前确认没有需要保留的卷。# 清理前检查dockerps-a# 确认要删除的容器dockerimages-a# 确认要删除的镜像dockervolumels# 确认要删除的卷
个人总结 docker 常用命令
常用命令1、镜像操作1.1、拉取镜像# 直接下载默认通过docker-hubdockerpull 镜像名:标签# 从 Docker Hub 下载镜像# 示例拉取 Ubuntu 20.04 镜像dockerpull ubuntu:20.04# 指定镜像源下载 (临时指定镜像源设置镜像加速时不需要)dockerpull --registry-mirrorhttps://registry.docker-cn.com nginx:alpine标签Tag通常表示版本如 latest、1.0。1.2、查看本地镜像dockerimages-a# 列出所有本地镜像1.3、构建自定义镜像dockerbuild-t自定义镜像名:标签.# 在当前目录构建镜像# 示例构建名为 myapp:1.0 的镜像dockerbuild-tmyapp:1.0.前提当前目录需有 Dockerfile定义镜像构建步骤。1.4、删除镜像dockerrmi IDxxx1.5、推送镜像到个人Docker Hub注册Docker Hub账号本地环境准备软件安装镜像准备本地镜像打标签Docker 推送镜像时标签格式必须和Docker Hub账号匹配否则会权限错误或推送失败dockertag 本地镜像名:标签 DockerHub用户名/目标仓库名:标签实操示例Docker Hub 用户名AAAAAAAA本地镜像ollama/ollama:latest想创建的仓库名my_ollama标签v1执行打标签命令dockertag 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 # 新标签镜像终端登录Docker Hub已经登陆就忽略这一步dockerlogin执行推送命令用刚才打好的新标签dockerpush AAAAAAAA/my_ollama:v12、容器操作2.1、运行容器dockerrun[选项]镜像名[命令]# 示例运行 Ubuntu 并进入交互式 shelldockerrun-itubuntu:20.04 /bin/bash# 常用选项-d# 后台运行detach-p主机端口:容器端口# 端口映射-v主机路径:容器路径# 挂载卷数据持久化--name容器名# 指定容器名称-e环境变量值# 设置环境变量2.2、查看运行中的容器dockerps# 查看正在运行的容器dockerps-a# 查看所有容器包括已停止的2.3、停止 / 启动容器dockerstop 容器名或ID# 停止运行中的容器dockerstart 容器名或ID# 启动已停止的容器dockerrestart 容器名或ID# 重启容器# 一键关闭所有运行中的容器dockerstop$(dockerps-q)2.4、进入容器dockerexec-it容器名或ID /bin/bash# 进入运行中的容器# 示例进入名为 webapp 的容器dockerexec-itwebapp /bin/bash2.5、删除容器dockerrm容器名或ID# 删除已停止的容器dockerrm-f容器名或ID# 强制删除运行中的容器慎用3、数据卷Volume操作3.1、创建数据卷dockervolume create 卷名# 创建命名卷# 示例创建名为 mydata 的数据卷dockervolume create mydata3.2、挂载数据卷到容器dockerrun-vmydata:/app/data 镜像名# 挂载卷到容器路径3.3、查看数据卷dockervolumels# 列出所有数据卷dockervolume inspect 卷名# 查看卷详情3.4、删除数据卷dockervolumerm卷名# 删除未使用的数据卷dockervolume prune# 删除所有未使用的数据卷4、网络操作4.1、查看网络dockernetworkls# 列出所有网络4.2、创建自定义网络dockernetwork create 网络名# 创建桥接网络# 示例创建名为 mynet 的网络dockernetwork create mynet4.3、运行容器并连接到网络dockerrun--networkmynet 镜像名# 连接容器到指定网络5、Docker Compose多容器管理5.1、创建 docker-compose.yml 文件version:3services:web:image:nginx:alpineports:-80:80volumes:-./html:/usr/share/nginx/htmldb:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:passwordvolumes:-mysql-data:/var/lib/mysqlvolumes:mysql-data:5.2、启动服务dockercompose up-d# 后台启动所有服务5.3、停止服务dockercompose down# 停止并移除所有服务5.4、查看服务状态dockercomposeps# 查看服务状态6、其他常用命令6.1、查看容器日志dockerlogs 容器名或ID# 查看容器日志dockerlogs-f容器名或ID# 实时跟踪日志6.2、查看容器资源使用dockerstats 容器名或ID# 查看容器 CPU/内存使用6.3、导出 / 导入镜像dockersave 镜像名:标签镜像文件.tar# 导出镜像dockerload镜像文件.tar# 导入镜像6.4、空间清理# 停止并删除所有容器dockerstop$(dockerps-aq)# 停止所有运行中的容器dockerrm$(dockerps-aq)# 删除所有容器# 删除所有未使用的镜像dockerimage prune-a# 删除所有未被容器使用的镜像包括悬空镜像# 删除所有未使用的卷dockervolume prune# 删除所有未被容器使用的卷数据可能丢失# 删除所有未使用的网络dockernetwork prune# 删除所有未被容器使用的网络# 一键清理所有未使用资源推荐dockersystem prune-a--volumes# 清理所有未使用的容器、镜像、网络和卷# -a删除所有未使用的镜像而不仅仅是悬空镜像。# --volumes同时删除未使用的卷需谨慎可能导致数据丢失。# 清理特定容器 / 镜像# 删除指定容器替换容器IDdockerrm容器ID# 删除指定镜像替换镜像ID或名称dockerrmi镜像ID或名称# 清理 Docker 缓存# 清理 Docker 构建缓存dockerbuilder prune# 清理 Docker 日志文件可能占用大量空间sudosh-ctruncate -s 0 /var/lib/docker/containers/*/*-json.log# 清理 Docker 存储驱动高级如果你使用的是 overlay2 存储驱动可以手动清理残留文件# 停止 Docker 服务sudosystemctl stopdocker# 删除无用的 overlay2 层谨慎操作sudorm-rf/var/lib/docker/overlay2/*# 启动 Docker 服务sudosystemctl startdocker# 清理后验证dockerps-a# 查看容器列表应无结果dockerimages# 查看镜像列表dockervolumels# 查看卷列表dockersystemdf# 查看 Docker 磁盘使用情况# 删除卷会导致数据永久丢失请确保重要数据已备份如数据库、配置文件等。# 建议使用命名卷而非匿名卷便于管理和保留数据。dockervolume create my-data# 谨慎使用 --volumes# 在执行 docker system prune --volumes 前确认没有需要保留的卷。# 清理前检查dockerps-a# 确认要删除的容器dockerimages-a# 确认要删除的镜像dockervolumels# 确认要删除的卷