当前位置: 首页 > news >正文

Docker 命令核心语法、常用命令

Docker 命令核心语法

docker [OPTIONS] COMMAND [ARG...]
  • docker: 主命令。
  • [OPTIONS]: 全局选项,影响 Docker 客户端本身的行为(如 -H 指定守护进程地址、--tls 启用加密等)。日常使用较少。
  • COMMAND: 子命令,表示要执行的主要操作(如 run, ps, images)。
  • [ARG...]: 传递给子命令的参数和选项。

常用 Docker 命令分类详解

以下是按照功能分类的最常用命令及其语法。

1. 容器生命周期管理 (最核心)
命令语法 & 常用选项说明
rundocker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d:后台运行
--name:命名容器
-p:端口映射 -p 主机端口:容器端口
-v:数据卷映射 -v 主机目录:容器目录
-e:设置环境变量
--network:指定网络模式
-it:交互模式运行(通常与 /bin/bash 连用)
创建并启动一个新容器。这是最复杂的命令。
startdocker start [OPTIONS] CONTAINER [CONTAINER...]启动一个或多个已停止的容器。
stopdocker stop [OPTIONS] CONTAINER [CONTAINER...]停止一个或多个运行中的容器(发送 SIGTERM 信号)。
restartdocker restart [OPTIONS] CONTAINER [CONTAINER...]重启一个或多个容器。
rmdocker rm [OPTIONS] CONTAINER [CONTAINER...]
-f:强制删除(正在运行的)
-v:同时删除关联的卷
删除一个或多个已停止的容器。
execdocker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-it:交互模式(进入容器)
-e:设置环境变量
在正在运行的容器中执行命令。常用于进入容器:docker exec -it mynginx /bin/bash
pause/unpausedocker pause CONTAINER
docker unpause CONTAINER
暂停/恢复容器内的所有进程。
2. 容器信息查询
命令语法 & 常用选项说明
psdocker ps [OPTIONS]
-a:显示所有容器(包括已停止的)
-q:只显示容器ID
--no-trunc:不截断输出
列出容器。docker ps -a 是最常用的组合
logsdocker logs [OPTIONS] CONTAINER
-f:跟踪日志输出(类似 tail -f
--tail N:仅显示最后 N 条日志
-t:显示时间戳
获取容器的日志。排查问题必备
inspectdocker inspect [OPTIONS] NAME|ID [NAME|ID...]
--format or -f:用 Go 模板格式化输出
获取容器(或镜像、网络、卷)的底层详细信息(JSON 格式)。非常强大。
statsdocker stats [OPTIONS] [CONTAINER...]动态显示容器的实时资源使用情况(CPU、内存、网络IO)。
topdocker top CONTAINER [ps OPTIONS]显示容器中运行的进程信息。
3. 镜像管理
命令语法 & 常用选项说明
imagesdocker images [OPTIONS] [REPOSITORY[:TAG]]
-a:显示所有镜像(包括中间层)
-q:只显示镜像ID
列出本地存储的镜像。
pulldocker pull [OPTIONS] NAME[:TAG|@DIGEST]从镜像仓库(如 Docker Hub)下载镜像。不指定 TAG 则默认为 latest
pushdocker push NAME[:TAG]将本地的镜像上传到镜像仓库。
rmidocker rmi [OPTIONS] IMAGE [IMAGE...]
-f:强制删除
删除本地的一个或多个镜像。
builddocker build [OPTIONS] PATH | URL | -
-t:指定镜像名和标签 name:tag
-f:指定 Dockerfile 路径
根据 Dockerfile 构建一个新的镜像。
tagdocker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]为本地镜像创建一个新的标签(别名)。
4. 网络管理
命令语法说明
network lsdocker network ls列出所有 Docker 网络。
network createdocker network create [OPTIONS] NETWORK创建一个新的 Docker 网络。
network inspectdocker network inspect NETWORK查看网络的详细信息。
network connectdocker network connect NETWORK CONTAINER将容器连接到指定网络。
network disconnectdocker network disconnect NETWORK CONTAINER断开容器与指定网络的连接。
5. 数据卷管理
命令语法说明
volume createdocker volume create [OPTIONS] VOLUME创建一个数据卷。
volume lsdocker volume ls列出所有数据卷。
volume inspectdocker volume inspect VOLUME查看数据卷的详细信息。
volume rmdocker volume rm VOLUME删除一个数据卷。
volume prunedocker volume prune删除所有未被使用的数据卷。

实战命令组合示例

  1. 从下载到运行一个容器

    # 1. 下载最新版 nginx 镜像
    docker pull nginx:latest# 2. 以后台模式运行,并设置名称和端口映射
    docker run -d --name my-web -p 80:80 nginx# 3. 查看运行状态
    docker ps# 4. 查看实时日志
    docker logs -f my-web# 5. 进入容器内部
    docker exec -it my-web /bin/bash# 6. 停止容器
    docker stop my-web# 7. 删除已停止的容器
    docker rm my-web# 8. 删除镜像
    docker rmi nginx:latest
    
  2. 清理资源

    # 停止所有容器
    docker stop $(docker ps -aq)# 删除所有已停止的容器
    docker rm $(docker ps -aq)# 删除所有未被使用的镜像
    docker image prune -a# 删除所有未被使用的网络和数据卷
    docker system prune --volumes
    

如何获取帮助

如果忘记命令用法,--help 是你最好的朋友。

  • 查看所有命令列表
    docker --help
    
  • 查看具体命令的详细帮助(例如 run):
    docker run --help
    

好的,Docker 保存和分享镜像主要有两种方式:使用镜像仓库直接保存为文件。它们各有优劣,适用于不同的场景。


保存、分享镜像

方法一:使用镜像仓库(推荐方式)

这是最标准、最常用的方法。Docker 镜像仓库类似于代码仓库(如 GitHub),用于存储和分发镜像。最著名的公共仓库是 Docker Hub,你也可以搭建私有仓库(如 Harbor, Nexus)。

工作流程:docker tag -> docker push -> docker pull

步骤 1:登录到镜像仓库

# 登录到 Docker Hub(默认)
docker login# 登录到其他私有仓库
docker login your-private-registry.com:5000

执行后会提示输入用户名和密码。

步骤 2:给镜像打标签
本地镜像的默认标签(如 my-app:latest)无法直接推送到仓库,需要按照 [仓库地址]/[用户名]/[镜像名]:[标签] 的格式重新打标签。

# 语法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]# 示例1:推送到 Docker Hub(假设用户名为 myusername)
docker tag my-app:latest myusername/my-app:latest
docker tag my-app:latest myusername/my-app:v1.0# 示例2:推送到私有仓库
docker tag my-app:latest your-private-registry.com:5000/myteam/my-app:prod

步骤 3:推送镜像到仓库
使用 docker push 命令将打好标签的镜像上传。

# 推送刚才打好标签的镜像
docker push myusername/my-app:latest
docker push myusername/my-app:v1.0
docker push your-private-registry.com:5000/myteam/my-app:prod

上传成功后,你就可以在 Docker Hub 网站或私有仓库的界面上看到你的镜像了。

步骤 4:他人拉取镜像分享
别人只需要一条 docker pull 命令即可获取你的镜像。

# 从 Docker Hub 拉取
docker pull myusername/my-app:latest# 从私有仓库拉取
docker pull your-private-registry.com:5000/myteam/my-app:prod

优点:

  • 极其方便:一条命令即可全球分发。
  • 版本管理:可以轻松管理不同版本的镜像(v1.0, v2.0, latest)。
  • 自动化集成:可以与 CI/CD 工具(如 GitHub Actions, Jenkins)完美结合,自动构建和推送镜像。

缺点:

  • 需要网络连接。
  • 公共仓库可能对私有项目收费,私有仓库需要自行维护。

方法二:保存为文件(离线方式)

这种方式将镜像打包成一个单一的 .tar 文件,适合离线环境、网络隔离场景或快速迁移。

工作流程:docker save -> 传输文件 -> docker load

步骤 1:将镜像保存为文件
使用 docker save 命令将镜像导出。

# 语法:docker save -o filename.tar IMAGE_NAME[:TAG]# 将单个镜像保存为 .tar 文件
docker save -o my-app-backup.tar my-app:latest# 将多个镜像保存到同一个文件
docker save -o all-my-images.tar nginx:alpine redis:alpine my-app:latest

步骤 2:分享文件
通过任何方式(U盘、邮件、网盘、SCP等)将生成的 .tar 文件发送给别人。

# 例如,使用 SCP 命令传输到服务器
scp my-app-backup.tar user@remote-server:/path/to/directory/

步骤 3:从文件加载镜像
对方使用 docker load 命令将镜像导入到其本地 Docker 环境中。

# 语法:docker load -i filename.tardocker load -i my-app-backup.tar# 加载后,使用 docker images 查看,镜像名和标签会与保存时完全一致
docker images

优点:

  • 完全离线:不依赖任何网络和仓库服务。
  • 简单直接:适合一次性迁移或备份。
  • 环境隔离:适用于安全要求高、无法连接外网的环境。

缺点:

  • 不方便:需要手动传输文件,文件体积可能很大。
  • 无版本管理:文件本身没有版本概念,需要手动管理文件名。

方法对比总结

特性使用镜像仓库 (push/pull)保存为文件 (save/load)
适用场景团队协作、CI/CD、公共分发离线环境、一次性迁移、备份
网络要求必需无需
方便程度非常方便(一条命令)相对麻烦(需处理文件)
版本管理支持(通过标签)不支持(需手动管理)
文件大小增量上传/下载,效率高完整镜像文件,可能很大

实战示例:如何分享一个自定义的 Web 应用

假设你构建了一个名为 my-web-app 的镜像。

方法 A:推送到 Docker Hub

# 1. 登录
docker login# 2. 打标签 (你的Docker Hub用户名是 johnsmith)
docker tag my-web-app:latest johnsmith/my-web-app:latest# 3. 推送
docker push johnsmith/my-web-app:latest# 4. 告诉你的同事运行
docker run -p 8080:80 johnsmith/my-web-app:latest

方法 B:保存为文件

# 1. 保存
docker save -o my-web-app-offline.tar my-web-app:latest# 2. 用U盘拷走...# 3. 同事加载并运行
docker load -i my-web-app-offline.tar
docker run -p 8080:80 my-web-app:latest

对于绝大多数情况,强烈推荐使用第一种方法(镜像仓库),它是 Docker 生态的核心工作流程。第二种方法应作为特殊情况下的备选方案。


文章转载自:

http://fkMvTnVd.jhrLk.cn
http://ny2Lhqdg.jhrLk.cn
http://LciruEtY.jhrLk.cn
http://BkxLWFVz.jhrLk.cn
http://PQPwRLZi.jhrLk.cn
http://MHlxaXCF.jhrLk.cn
http://wzbXot5z.jhrLk.cn
http://w4XJHR92.jhrLk.cn
http://Xl3mUgUc.jhrLk.cn
http://UPRQv6Tf.jhrLk.cn
http://1LecwwAQ.jhrLk.cn
http://HOOWEHJa.jhrLk.cn
http://hxUFpjpi.jhrLk.cn
http://8FVzI2ut.jhrLk.cn
http://gIy0efYi.jhrLk.cn
http://gvwRejro.jhrLk.cn
http://G6T0J9gc.jhrLk.cn
http://m11OdmP7.jhrLk.cn
http://IK7e9kJg.jhrLk.cn
http://RW8hYTed.jhrLk.cn
http://o6TksysB.jhrLk.cn
http://QamFzl4y.jhrLk.cn
http://TrCW6Sod.jhrLk.cn
http://rOuvA4DC.jhrLk.cn
http://9YzVgRP7.jhrLk.cn
http://Dn67ZilY.jhrLk.cn
http://GPE4eFnZ.jhrLk.cn
http://AjLXH3Ja.jhrLk.cn
http://r2vhvk08.jhrLk.cn
http://tGazOEbN.jhrLk.cn
http://www.dtcms.com/a/379395.html

相关文章:

  • Windows安装Chroma DB
  • 60_基于深度学习的羊群计数统计系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • Linux 命令 top、vmstat、iostat、free、iftop 正常用法和退出.
  • 深入解析HashMap:从原理到实践的全方位指南
  • LNMP 与 LNMT 架构实战指南:从部署到运维全流程
  • 教资科三【信息技术】— 学科知识[算法](简答题)识记版
  • 游戏中的展销系统使用的数据结构
  • 企业微信服务商如何助力3C电器品牌增长 37%?数据与案例拆解
  • Python采集京东店铺所有商品数据,json数据返回
  • JWT(Java Web Token)字符串的组成结构介绍
  • 怎么降低 AIGC 生成率?
  • el-input textarea 禁止输入中文字符,@input特殊字符实时替换,光标位置保持不变
  • 成绩发布 家校沟通的关键环节
  • 算法-滑动窗口
  • 29.线程的互斥与同步(三)
  • 第3节-使用表格数据-DEFAULT约束
  • linux系统安装wps
  • 26. AI-Agent-LangChain
  • 基于51单片机温度控制系统报警器恒温箱蓝牙app控制设计
  • 2025 年 GPU 显卡维修市场:高性能计算时代的刚需支撑
  • 融智学新范式(1992-2000)被认为是先于谷歌同类探索的更全面更深刻的理论研究和实践应用
  • 领码方案|Windows 下 PLT → PDF 转换服务超级完整版:异步、权限、进度
  • IvorySQL 适配 LoongArch® 龙架构
  • 公寓智能水电门锁管理系统:一套系统,彻底重构租赁管理逻辑
  • 从伦理保障到病史管理,武汉大学等提出Healthcare Agent,问诊主动性及相关性超越GPT-4等闭源模型
  • 华为交换机VLAN技术基础1(VLAN划分及跨交换机相同VLAN的通信技术)
  • Python自动化测试实现思路
  • python学习进阶之异常和文件操作(三)
  • vue3源码学习(三)computed 源码学习
  • 94. 二叉树的中序遍历