Docker常用命令介绍

Docker常用命令

1、本地镜像管理

save 命令

将一个或多个 Docker 镜像保存到一个 tar 归档文件中,以便在其他环境中分发或备份。

# 语法:docker save [OPTIONS] IMAGE [IMAGE...]# 保存单个镜像到文件
docker save -o myimage.tar myimage:latest# 保存多个镜像到同一个文件
docker save -o multiple_images.tar image1:latest image2:latest# 注意:
# 1、保存镜像时,会包含镜像的所有层,因此生成的 tar 文件可能会很大。
# 2、如果保存多个镜像到同一个文件中,使用 docker load 命令时会加载所有包含的镜像。
# 3、为了减少文件大小,可以在保存前使用 docker image prune 命令清理未使用的镜像和层。

load 命令

用于从由 docker save 命令生成的 tar 文件中加载 Docker 镜像。

# 语法:docker load [OPTIONS]# 从文件加载镜像
docker load -i myimage.tar# 从标准输入加载镜像
cat myimage.tar | docker load# 参数:
# -i, --input: 指定输入文件的路径
# -q, --quiet: 安静模式,减少输出信息

build 命令

用于从 Dockerfile 构建 Docker 镜像。

docker build 命令通过读取 Dockerfile 中定义的指令,逐步构建镜像,并将最终结果保存到本地镜像库中。

# 语法:docker build [OPTIONS] PATH | URL | -

常用参数

  • PATH: 包含 Dockerfile 的目录路径或 .(当前目录)
  • URL: 指向包含 Dockerfile 的远程存储库地址(如 Git 仓库)
  • -: 从标准输入读取 Dockerfile

常用选项

  • -t, --tag: 为构建的镜像指定名称和标签
  • -f, --file: 指定 Dockerfile 的路径(默认是 PATH 下的 Dockerfile)
  • –build-arg: 设置构建参数
  • –no-cache: 不使用缓存层构建镜像
  • –rm: 构建成功后删除中间容器(默认开启)
  • –force-rm: 无论构建成功与否,一律删除中间容器
  • –pull: 始终尝试从注册表拉取最新的基础镜像

更多选项

  • --build-arg=[]: 设置构建镜像时的变量
  • --cpu-shares: 设置 CPU 使用权重
  • -f: 指定 Dockerfile 的路径
  • --force-rm: 强制在构建过程中删除中间容器
  • --isolation: 使用指定的容器隔离技术
  • --label=[]: 设置镜像的元数据
  • -m: 设置内存的最大值
  • --memory-swap: 设置交换空间的最大值(内存 + 交换空间),-1 表示不限制交换空间
  • --no-cache: 构建镜像时不使用缓存
  • --shm-size: 设置 /dev/shm 的大小,默认值为 64M
  • --ulimit: 设置 Ulimit 配置
  • --network: 在构建期间设置 RUN 指令的网络模式,默认值为 default

其它命令

  • docker images 命令用于列出本地的 Docker 镜像。

2、容器生命周期管理

run 命令

docker run 命令用于创建并启动一个新的容器。

# 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

常用参数

  • -d: 后台运行容器并返回容器 ID。
  • -it: 交互式运行容器,分配一个伪终端。
  • --name: 给容器指定一个名称。
  • -p: 端口映射,格式为 host_port:container_port
  • -v: 挂载卷,格式为 host_dir:container_dir
  • --rm: 容器停止后自动删除容器。
  • --env-e: 设置环境变量。
  • --network: 指定容器的网络模式。
  • --restart: 容器的重启策略(如 noon-failurealwaysunless-stopped)。
  • -u: 指定用户。

简单示例

# 1. 基本使用
docker run ubuntu # 拉取 ubuntu 镜像并在前台启动一个容器。# 2. 后台运行容器
docker run -d ubuntu # 在后台运行 ubuntu 容器并返回容器 ID。# 3. 交互式运行并分配终端
docker run -it ubuntu /bin/bash # 以交互模式运行 ubuntu 容器,并启动一个 Bash shell。# 4. 指定容器名称
docker run --name my_container ubuntu # 运行一个 ubuntu 容器,并将其命名为 my_container。# 5. 端口映射
docker run -p 8080:80 nginx # 将本地主机的 8080 端口映射到容器内的 80 端口,运行 nginx 容器。# 6. 挂载卷
docker run -v /host/data:/container/data ubuntu # 将主机的 /host/data 目录挂载到容器内的 /container/data 目录。# 7. 设置环境变量
docker run -e MY_ENV_VAR=my_value ubuntu # 设置环境变量 MY_ENV_VAR 的值为 my_value,运行 ubuntu 容器。# 8. 使用网络模式
docker run --network host nginx # 使用主机的网络模式运行 nginx 容器。# 9. 指定重启策略
docker run --restart always nginx # 设置容器的重启策略为 always,即使容器停止也会自动重启。# 10. 指定用户
docker run -u user123 ubuntu # docker run -u user123 ubuntu# 11. 组合多个选项
docker run -d -p 8080:80 -v /host/data:/data --name webserver nginx 
# 后台运行一个命名为 webserver 的 nginx 容器,将主机的 8080 端口映射到容器的 80 端口,并将主机的 /host/data 目录挂载到容器的 /data 目录。

exec 命令

docker exec 命令用于在运行中的容器内执行一个新的命令。这对于调试、运行附加的进程或在容器内部进行管理操作非常有用。

# 语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

常用参数

  • -d, --detach: 在后台运行命令。
  • -i, --interactive: 保持标准输入打开。
  • --workdir, -w: 指定命令的工作目录。
  • -t, --tty: 分配一个伪终端。
  • --privileged: 给这个命令额外的权限。
  • -e, --env: 设置环境变量。
  • --env-file: 从文件中读取环境变量。

简单示例

# 1、在容器内运行命令,在运行中的 my_container 容器内执行 ls /app 命令,列出 /app 目录的内容。
docker exec my_container ls /app# 2、以交互模式运行命令,注意不一定是/bin/bash,可能是/bin/sh、sh、bash等等
docker exec -it my_container /bin/bash
# 在运行中的 my_container 容器内启动一个交互式的 Bash shell。-i 保持标准输入打开,-t 分配一个伪终端。# 后台运行命令,在运行中的 my_container 容器内后台执行 touch /app/newfile.txt 命令,创建一个新文件。
docker exec -d my_container touch /app/newfile.txt# 3、设置环境变量,在运行中的 my_container 容器内执行 env 命令,并设置环境变量 MY_ENV_VAR 的值为 my_value。
docker exec -e MY_ENV_VAR=my_value my_container env# 4、以指定用户身份运行命令,在运行中的 my_container 容器内以 user123 用户身份执行 whoami 命令。
docker exec -u user123 my_container whoami# 5、指定工作目录,在运行中的 my_container 容器内以 /app 目录为工作目录执行 pwd 命令。
docker exec -w /app my_container pwd

使用场景

  • 调试容器: 进入容器内部进行调试和排查问题。
  • 管理任务: 在容器内运行附加的管理任务或维护操作。
  • 监控和检查: 在容器内执行监控和检查命令,获取运行状态和日志。

create 命令

docker create 命令用于创建一个新的容器,但不会启动它。

docker create 命令会根据指定的镜像和参数创建一个容器实例,但容器只会在创建时进行初始化,并不会执行任何进程。

具体用法同 docker run 是一样的。

其它命令

  • docker start 命令用于启动一个或多个已经创建的容器。

    参数:

    • -a: 附加到容器的标准输入输出流。
    • -i: 附加并保持标准输入打开。
  • docker stop 命令用于停止一个运行中的容器。

    参数:

    • -t, --time: 停止容器之前等待的秒数,默认是 10 秒。
  • docker restart 命令用于重启容器。

  • docker kill 命令用于立即终止一个或多个正在运行的容器。

  • docker rm 命令用于删除一个或多个已经停止的容器。

  • docker pause - 暂停容器中所有的进程。

  • docker unpause - 恢复容器中所有的进程。

    暂停的容器不会被终止,但其进程将被挂起,直到容器被恢复。这在需要临时暂停容器活动的情况下非常有用。

    使用场景

    • 临时暂停活动: 当需要临时暂停容器中的所有活动以进行系统维护或资源管理时,可以使用 docker pause
    • 资源管理: 在需要重新分配系统资源时,暂停不必要的容器以释放资源。
    • 调试和故障排除: 在调试或故障排除过程中暂停容器以分析当前状态。
  • docker rename 命令用于重命名已存在的容器。允许在不停止或删除容器的情况下,直接修改容器的名称。

3、容器操作

ps 命令

docker ps 命令用于列出 Docker 容器。

默认情况下,docker ps 命令只显示运行中的容器,但也可以通过指定选项来显示所有容器,包括停止的容器。

# 语法:docker ps [OPTIONS]

OPTIONS 说明:

  • -a, --all: 显示所有容器,包括停止的容器。
  • -q, --quiet: 只显示容器 ID。
  • -l, --latest: 显示最近创建的一个容器,包括所有状态。
  • -n: 显示最近创建的 n 个容器,包括所有状态。
  • --no-trunc: 不截断输出。
  • -s, --size: 显示容器的大小。
  • --filter, -f: 根据条件过滤显示的容器。
  • --format: 格式化输出。

实例

# 1、显示最近创建的一个容器
docker ps -l# 2、显示最近创建的 n 个容器
docker ps -n 3# 3、显示容器的大小
docker ps -s

inspect 命令

docker inspect 命令用于获取 Docker 对象(容器、镜像、卷、网络等)的详细信息。

docker inspect 命令返回 JSON 格式的详细信息,可以帮助用户了解对象的配置和状态。

# 语法:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS 说明:

  • -f, --format: 使用 Go 模板语法格式化输出。
  • --type: 返回指定类型的对象信息(可选类型:containerimagenetworkvolume)。

使用场景

  • 调试容器: 获取容器的详细配置信息,以便进行调试和排查问题。
  • 查看网络配置: 查看容器的网络配置信息,了解其网络连接状态。
  • 监控资源: 获取容器的资源配置信息和使用情况,便于进行资源管理和监控。
  • 脚本自动化: 在自动化脚本中使用 docker inspect 获取对象的详细信息,以进行后续操作。

top 命令

docker top 命令用于显示指定容器中的正在运行的进程。

docker top 命令类似于 Linux 中的 topps 命令,它帮助用户查看容器内的进程信息,便于监控和调试容器内的活动。

# 语法:docker top [OPTIONS] CONTAINER [ps OPTIONS]

使用自定义 ps 选项:

docker top my_container -o pid,comm

常用场景

  • 监控容器内部活动: 通过查看容器内的进程,用户可以监控容器内部正在运行的应用程序和服务。
  • 调试和排查问题: 当容器出现问题时,可以通过 docker top 命令查看容器内的进程,帮助排查问题。
  • 资源管理: 了解容器内的进程和资源使用情况,便于进行资源管理和优化。

logs 命令

docker logs 命令用于获取和查看容器的日志输出。

docker logs 命令非常有用,可以帮助用户调试和监控运行中的容器。

# 语法:docker logs [OPTIONS] CONTAINER

常用选项:

  • -f, --follow: 跟随日志输出(类似于 tail -f)。
  • --since: 从指定时间开始显示日志。
  • -t, --timestamps: 显示日志时间戳。
  • --tail: 仅显示日志的最后部分,例如 --tail 10 显示最后 10 行。
  • --details: 显示提供给日志的额外详细信息。
  • --until: 显示直到指定时间的日志。

实例

# 1、显示带时间戳的日志
docker logs -t my_container# 2、从指定时间开始显示日志
docker logs --since="2023-07-22T15:00:00" my_container# 3、显示直到指定时间的日志
docker logs --until="2023-07-22T16:00:00" my_container

cp 命令

docker cp 命令用于在 Docker 容器和宿主机之间复制文件或目录。

docker cp 命令支持从容器到宿主机,或从宿主机到容器的文件复制操作。

# 语法
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  • SRC_PATH: 源路径(可以是容器内的路径或宿主机的路径)。
  • CONTAINER: 容器的名称或 ID。
  • DEST_PATH: 目标路径(可以是容器内的路径或宿主机的路径)。
# 1、从容器复制文件到宿主机
docker cp my_container:/path/in/container /path/on/host# 2、从宿主机复制文件到容器
docker cp /path/on/host my_container:/path/in/container

注意

在处理大文件或大目录时,复制操作可能需要一些时间。且宿主机或容器中应有足够的权限进行写入操作。

其它命令

  • docker attach 命令用于附加到正在运行的 Docker 容器的标准输入、输出和错误输出(stdin、stdout、stderr)。允许用户直接与容器交互,就像与正在运行的进程交互一样。
  • docker events 命令用于实时获取 Docker 守护进程生成的事件。允许用户监控 Docker 容器、镜像、网络和卷的各种操作事件,例如创建、启动、停止、删除等。
  • docker export 命令用于将 Docker 容器的文件系统导出为一个 tar 归档文件。用于备份或迁移容器的文件系统,而不包括 Docker 镜像的所有层和元数据。
  • docker port 命令用于显示容器的端口映射信息,即容器内部的端口如何映射到宿主机的端口。
  • docker stats 命令用于实时显示 Docker 容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O。
  • docker update 命令用于更新 Docker 容器的资源限制,包括内存、CPU 等。
  • docker commit 命令用于将容器的当前状态保存为一个新的 Docker 镜像。通常用于创建镜像来保存容器的状态,以便在将来可以重用或分发该镜像。

4、网络命令

  • docker network ls: 列出所有网络。
  • docker network create <network>: 创建一个新的网络。
  • docker network rm <network>: 删除指定的网络。
  • docker network connect <network> <container>: 连接容器到网络。
  • docker network disconnect <network> <container>: 断开容器与网络的连接。

5、卷命令

  • docker volume ls: 列出所有卷。
  • docker volume create <volume>: 创建一个新的卷。
  • docker volume rm <volume>: 删除指定的卷。
  • docker volume inspect <volume>: 显示卷的详细信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动

文章目录 一、企业级的Allure报告的定制左边的定制&#xff1a;右边的定制&#xff1a;1.用例的严重程度/优先级2.用例描述3.测试用例连接的定制4.测试用例步骤的定制5.附件的定制 二、企业中真实的定制有哪些&#xff1f;三、allure报告如何在本地访问四、allure中的数据驱动装…

DDoS防护实战——从基础配置到高防IP部署

一、基础防护&#xff1a;服务器与网络层加固 Linux内核优化&#xff1a; 调整TCP协议栈参数&#xff0c;缓解SYN Flood攻击&#xff1a; # 启用SYN Cookie并减少超时时间 echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout…

华为云Flexus+DeepSeek征文|Flexus云服务器Dify-LLM资源部署极致体验Agent

前引&#xff1a;重磅来袭&#xff01;本次以DeepSeek-V3/R1商用大模型和Dify-LLM应用平台一键部署为核心&#xff0c;专为新手打造“开箱即用”的AI开发体验。无论你是想快速搭建企业级AI应用&#xff0c;还是探索大模型落地的无限可能&#xff0c;只需跟随小编实现三步走&…

SQLAlchemy 2.0 查询使用指南

SQLAlchemy 2.0 查询使用指南 1. 环境设置 首先&#xff0c;需要安装 SQLAlchemy 2.0 版本。假设你使用的是 SQLite 数据库&#xff0c;可以通过以下命令安装 SQLAlchemy&#xff1a; pip install sqlalchemy接着&#xff0c;我们创建数据库连接并初始化会话&#xff1a; f…

Windows 使用 WSL 安装 Ubuntu

一&#xff0c;前言 Windows 上轻松跑 Linux 又不想用笨重的VMware 和VirtualBox &#xff0c;怎么办&#xff1f; 开源项目 Windows Subsystem for Linux (WSL)。它解决了许多开发者在 Windows 和 Linux 间切换的痛点&#xff0c;实现在 Windows 上无缝跑 Linux 工具和命令。…

[Excel VBA]如何製作買三送一優惠條件的POS結帳介面?

Excel I VBA I 買三送一優惠條件的POS結帳機 因應商品特賣活動&#xff0c;結帳介面需整合特定優惠條件&#xff0c;如買三送一&#xff0c;買五送二等等優惠條件。本文封面影片以買三送一為範例&#xff0c;並搭配VBA和對應按鈕&#xff0c;而實現銷售訂單紀錄和即時更新庫存等…

3d世界坐标系转屏幕坐标系

世界坐标 ——> NDC标准设备坐标 ——> 屏幕坐标 标准设备NDC坐标系 屏幕坐标系 .project方法将 将向量(坐标)从世界空间投影到相机的标准化设备坐标 (NDC) 空间。 手动实现HTML元素定位到模型位置&#xff0c;实现模型标签效果&#xff08;和css2Render原理同理&#…

Idea出现 100% classes 等

总是误点出来&#xff0c;每次又忘了怎么消除&#xff0c;在这里记录一下。 出现这样&#xff1a; 操作idea界面的&#xff1a;点击View->Tool Windows ->Coverage&#xff0c;然后关掉

从零开始学习QT——第一步

一、Qt 1.1、Qt是什么 Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 1.2、Qt的发展历程 1991年 Qt最早由芬兰奇趣科技开发 1996年 进入商业…

MySQL 8.0 OCP 1Z0-908 171-180题

Q171.Examine this MySQL client command to connect to a remote database: mysql-h remote-example.org-u root–protocolTCP–ssl-mode Which two–ss1-mode values will ensure that an X.509-compliant certificate will be used to establish the SSL/TLS connection to …

【机器学习】 关于外插修正随机梯度方法的数值实验

1. 随机梯度下降&#xff08;SGD&#xff09; 迭代格式&#xff1a; x k 1 x k − η k ∇ f i ( x k ) x_{k1} x_k - \eta_k \nabla f_i(x_k) xk1​xk​−ηk​∇fi​(xk​) 其中&#xff0c; η k \eta_k ηk​ 为步长&#xff08;可能递减&#xff09;&#xff0c; ∇ f…

每日c/c++题 备战蓝桥杯(洛谷P3382 三分法求极值详解)

洛谷P3382 三分法求极值详解 题目描述 P3382 三分法 要求在给定区间内寻找一个多项式函数的最大值点。题目保证函数在区间内先严格递增后严格递减&#xff08;单峰函数&#xff09;&#xff0c;适合使用三分法求解。 算法原理 三分法核心思想 对于单峰函数&#xff0c;在区…

[Windows] 一键实现重复工作自动化zTasker

zTasker&#xff0c;是一款定时&#xff5c;热键&#xff5c;纯粹的自动化任务神器。它支持超过100种任务类型&#xff0c;包括提醒、关机重启、报时、挡屏休息、文件备份、音量调节、静音等。用户可以通过定时、CPU占用、文件夹监控、网速、快捷键等多种条件触发任务。 简单点…

Docker核心笔记

一、概述 1、架构 Docker容器基于镜像运行,容器共享宿主机的内核,不会加载额外内核,通过Namespaces(环境隔离)和Cgroups(资源控制)实现隔离,Cgroups会限容器使用资源并控制优先级和统计数据。隔离后的容器仅包含应用所需的用户态依赖 2、安装 安装先卸载再安装,使用的yum…

2025年电工杯数学建模B题【垃圾运输】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025年电工杯数学建模B题【垃圾运输】完整的成品论文。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 一、问题重述 二&#xff0e;问题分析 2.1问题一 2.2问题二 2.3问题三 三、模型假设 …

[爬虫知识] IP代理

相关实战案例&#xff1a;[爬虫实战] 代理爬取&#xff1a;小白也能看懂怎么用代理 相关爬虫专栏&#xff1a;JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 引言&#xff1a;爬虫与IP封锁的攻防战 对网络爬虫而言&#xff0c;遇到的一个较棘手的问题就是封IP&#xff1a;请…

计算机视觉---YOLOv1

YOLOv1深度解析&#xff1a;单阶段目标检测的开山之作 一、YOLOv1概述 提出背景&#xff1a; 2016年由Joseph Redmon等人提出&#xff0c;全称"You Only Look Once"&#xff0c;首次将目标检测视为回归问题&#xff0c;开创单阶段&#xff08;One-Stage&#xff09…

前端学习笔记element-Plus

【element-plus菜单】参数说明&#xff1a; active-text-color"#ffd04b"——激活颜色 background-color"#232323"——背景颜色&#xff08;29,160,176&#xff09; :default-active"$route.path"——配置默认高亮的菜单项 text-color"#f…

【Django DRF】一篇文章总结Django DRF框架

第一章 DRF框架基础 1.1 DRF简介 1.1.1 DRF定义与作用 1. 定义 DRF 即 Django REST framework&#xff0c;它是一个建立在 Django 基础之上的强大且灵活的工具包&#xff0c;用于构建 Web API&#xff08;应用程序编程接口&#xff09;&#x1f60e;。简单来说&#xff0c;…

如何解决 Python 项目安装依赖报错:ERROR: Failed to build installable wheels for some pyproject.toml based project

如何解决 Python 项目安装依赖报错&#xff1a;ERROR: Failed to build installable wheels for some pyproject.toml based projects 在使用 pip 安装 Python 项目的依赖时&#xff0c;遇到类似如下的报错信息&#xff1a; ERROR: Failed to build installable wheels for s…