Docker基础命令说明

Docker基础操作命令众多,这些命令可以按如下方式进行分类:

  • 镜像操作
  • 容器操作
  • 网络操作
  • 数据卷操作
  • LOG查询

等方面进行分类。

一、镜像操作命令

  • docker images:用于列出本地系统中所有的 Docker 镜像。镜像就像是一个模板,它包含了运行容器所需的所有文件、配置和依赖项。通过docker images命令,可以查看镜像的名称、标签、ID、创建时间以及大小等信息,例如:
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    05a60464f1d5   2 weeks ago   133MB
ubuntu       20.04     98c375a7b220   3 weeks ago   72.8MB
  • docker pull:用于从 Docker 镜像仓库(如 Docker Hub)拉取镜像。
docker pull nginx:latest

上述命令会从 Docker Hub 拉取最新版本的 Nginx 镜像。

  • docker build:基于 Dockerfile 构建自定义镜像。
docker build -t my-custom-image:1.0 .

此命令会在当前目录(.)查找 Dockerfile 并构建名为 my-custom-image 、标签为 1.0 的镜像。

  • docker rmi:删除本地的 Docker 镜像。
docker rmi nginx:latest

该命令会删除本地的 nginx:latest 镜像。

二、容器操作命令

  • docker ps::用于列出正在运行的 Docker 容器。
    容器是基于镜像创建的可运行实例,当使用一个镜像启动一个容器后,就可以通过docker ps命令查看容器的相关信息,如容器 ID、运行的命令、创建时间、状态、端口映射以及所使用的镜像等,例如:
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    05a60464f1d5   2 weeks ago   133MB
ubuntu       20.04     98c375a7b220   3 weeks ago   72.8MB
  • docker run:基于指定镜像创建并启动一个新的容器。
docker run -d -p 8080:80 nginx:latest

此命令会使用 nginx:latest 镜像创建一个后台运行(-d)的容器,并将容器的 80 端口映射到主机的 8080 端口。

  • docker startdocker stopdocker restart:分别用于启动、停止和重启已经存在的容器。
# 启动容器
docker start my-container
# 停止容器
docker stop my-container
# 重启容器
docker restart my-container
  • docker exec:在运行的容器内部执行命令。
docker exec -it my-container bash

该命令会以交互式(-i)和伪终端(-t)模式在 my-container 容器内启动一个 Bash 会话。

  • docker rm:删除一个或多个停止的容器。
docker rm my-container

注意:
1、不能删除一个正在run的程序;
2、如果一个image下启动了一个或多个容器,且容器正在运行。如果要删除image,必须按如下步骤进行:

  • 停止容器(docker stop my-container)
  • 删除image创建的所有容器(docker rm my-container)
  • 删除image(docker rmi my-image)

关于镜像和容器的补充说明:

两者的关系

  • 镜像与容器的关系:容器是由镜像创建而来的,镜像是容器的基础。可以将镜像看作是一个类,而容器则是这个类的实例。一个镜像可以创建多个容器实例,这些容器共享镜像的文件系统和基础配置,但各自有独立的运行时环境和状态。
  • 命令作用的关系docker images命令主要用于管理和查看镜像资源,帮助了解本地有哪些可用的镜像,以便进行拉取、构建、删除等操作。而docker ps命令则主要用于监控和管理正在运行的容器,可以通过它了解容器的运行状态,进而进行停止、启动、重启等操作。
    docker imagesdocker ps分别从镜像和容器的角度提供了对Docker环境的不同视角,它们相互配合,帮助用户全面了解和管理Docker中的资源。

三、网络操作命令

  • docker network ls:列出所有 Docker 网络。
docker network ls
  • docker network create:创建一个新的 Docker 网络。
docker network create my-network
  • docker network connectdocker network disconnect:分别用于将容器连接到网络和从网络中断开容器。
# 将容器连接到网络
docker network connect my-network my-container
# 从网络中断开容器
docker network disconnect my-network my-container

四、数据卷操作命令

  • docker volume ls:列出所有 Docker 数据卷。
docker volume ls
  • docker volume create:创建一个新的 Docker 数据卷。
docker volume create my-volume
  • docker volume rm:删除一个或多个 Docker 数据卷。
docker volume rm my-volume

五、其他常用命令

  • docker info:显示 Docker 系统的综合信息,如 Docker 版本、镜像和容器数量、存储驱动等。
docker info
  • docker logs:查看容器的日志输出。
docker logs my-container

docker logs 命令用于查看 Docker 容器的日志输出,这对于调试和监控容器内应用程序的运行状态非常有用。以下是对该命令的详细解释:

基本语法

docker logs [OPTIONS] CONTAINER

其中,OPTIONS 是可选参数,CONTAINER 是容器的名称或 ID。

常用选项及示例

1. -f--follow
  • 作用:持续跟踪日志输出,类似于 tail -f 命令。当容器内的应用程序持续产生日志时,使用该选项可以实时查看新的日志信息。
  • 示例
docker logs -f my-container

此命令会持续输出 my-container 容器的日志,直到手动停止(使用 Ctrl + C)。

2. --since
  • 作用:只显示自指定时间之后的日志。时间格式可以是 YYYY-MM-DDTHH:MM:SS 或者相对时间(如 2m 表示 2 分钟前)。
  • 示例
# 显示自 2024-01-01 12:00:00 之后的日志
docker logs --since "2024-01-01T12:00:00" my-container
# 显示自 5 分钟前之后的日志
docker logs --since 5m my-container
3. --until
  • 作用:只显示直到指定时间之前的日志。时间格式与 --since 相同。
  • 示例
# 显示直到 2024-01-01 12:00:00 之前的日志
docker logs --until "2024-01-01T12:00:00" my-container
# 显示直到 3 分钟前之前的日志
docker logs --until 3m my-container
4. -t--timestamps
  • 作用:在日志输出中添加时间戳,方便了解每条日志的产生时间。
  • 示例
docker logs -t my-container

输出的日志每条前面会带有时间戳,类似如下格式:

2024-01-01T12:00:00.123456000Z Log message here
5. --tail
  • 作用:只显示日志的最后 N 行。当日志文件非常大时,使用该选项可以快速查看最新的日志信息。
  • 示例
# 显示日志的最后 10 行
docker logs --tail 10 my-container

六、高级用法

结合 grep 进行日志过滤

可以将 docker logs 的输出通过管道传递给 grep 命令,以过滤出包含特定关键字的日志信息。

docker logs my-container | grep "error"

该命令会过滤出 my-container 容器日志中包含 “error” 关键字的行。

查找 指定开始、结束时间范围内 的数据
docker logs --since "2024-01-01T12:00:00" --until "2024-01-01T12:05:00" my-container

注意事项

  • 日志文件大小:容器的日志文件会不断增长,可能会占用大量磁盘空间。可以通过配置 Docker 的日志驱动(如 json-file 驱动的 max-sizemax-file 参数)来限制日志文件的大小和数量。
  • 日志权限:确保有足够的权限查看容器的日志。通常,使用 root 用户或具有 docker 组权限的用户可以正常执行 docker logs 命令。

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

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

相关文章

AI重构私域增长:从流量收割到终身价值运营的三阶跃迁

私域运营的AI进化论:内容即服务的三个阶段 随着企业微信生态的成熟,私域运营正经历从"流量收割"到"关系养成"的本质转变。在AIGC技术的推动下,2024年私域场景正式进入**"内容即服务"**的价值共创期&#xff1…

Linux date 命令使用指南

date 命令用于 显示或设置系统日期和时间&#xff0c;支持灵活的时间格式化和计算。以下是常用场景与详细示例&#xff1a; 一、基本用法 1. 显示当前日期和时间 <BASH> date # 输出&#xff1a;Thu Jun 13 14:25:36 CST 20242. 设置系统时间&#xff08;需root权限&am…

Maven的依赖管理

maven相关依赖的官网&#xff1a;https://mvnrepository.com/ pom.xml是项目依赖的配置文件 maven首先会去本地仓库下载相关依赖&#xff0c;如果没有&#xff0c;则会去私服下载&#xff0c;再没有&#xff0c;就去中央仓库或镜像下载。 自定义properties&#xff0c;可使用…

Mybaties批量操作

1、批量插入 <!--批量操作-插入--><!-- 相当于INSERT INTO t_goods (c1,c2,c3) VALUES (a1,a2,a3),(b1,b2,b3),(d1,d2,d3),...--><insert id"batchInsert" parameterType"java.util.List">INSERT INTO t_goods (title,sub_title,origina…

向量库集成指南

文章目录 向量库集成指南Chroma集成Pinecone集成MiLvus集成向量库集成指南 向量库是一种索引和存储向量嵌入以实现高效管理和快速检索的数据库。与单独的向量索引不同,像Pinecone这样的向量数据库提供了额外的功能,例如,索引管理、数据管理、元数据存储和过滤,以及水平扩展…

软件测试之使用Requests库进行接口测试

文章目录 前言Requests库是什么为什么要用Requests库进行接口测试安装Requests库Requests库使用发送GET请求发送带查询参数的GET请求响应内容格式添加请求头信息发送一个POST请求查看响应内容断言请求超时Cookie与Session模拟登录 参考目录 前言 阅读本文前请注意最后编辑时间…

AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

AttributeError: module backend_interagg has no attribute FigureCanvas 这个错误通常是由于 Matplotlib 的后端配置问题引起的。具体来说&#xff0c;Matplotlib 在尝试加载某个后端时&#xff0c;发现该后端模块中缺少必要的属性&#xff08;如 FigureCanvas&#xff09;&a…

iWebOffice2015 中间件如何在Chrome107及之后的高版本中加载

iWebOffice2015是江西金格科技有限公司开发的一款智能文档中间件&#xff0c;和一些知名OA及ERP公司曾经达成OEM合作&#xff0c;所以用户一度比较多&#xff0c;但不幸的是Chromium内核浏览器在2022年10月份发布的107版本中永久取消了对PPAPI插件的加载支持&#xff0c;导致使…

【MyBatis Plus JSON 处理器简化数据库操作】

文章目录 什么是 MyBatis-Plus JSON 处理器&#xff1f;开始使用 MyBatis-Plus JSON 处理器步骤 1: 创建实体类步骤 2: 创建 Mapper 接口步骤 3: 查询 JSON 数据步骤 4: 插入和更新 JSON 数据 什么是 MyBatis-Plus JSON 处理器&#xff1f; MyBatis-Plus 是一个基于 MyBatis 的…

OpnenHarmony 开源鸿蒙北向开发——1.开发环境搭建(DevEco Studio 5.03)

我这边是基于window下对OpenHarmony开源鸿蒙进行北向开发。 一、安装DevEco Studio 1、下载 下载中心 | 华为开发者联盟-HarmonyOS开发者官网&#xff0c;共建鸿蒙生态 2、安装 下载完成之后进行解压 双击进行安装 按照我的步骤进行 选择安装目录&#xff0c;全部配置完成后…

深入 Python 网络爬虫开发:从入门到实战

一、为什么需要爬虫&#xff1f; 在数据驱动的时代&#xff0c;网络爬虫是获取公开数据的重要工具。它可以帮助我们&#xff1a; 监控电商价格变化抓取学术文献构建数据分析样本自动化信息收集 二、基础环境搭建 1. 核心库安装 pip install requests beautifulsoup4 lxml …

linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)

文章目录 一、常规办法二、继续三、继续四、缺少 libgomp库&#xff08;最终解决&#xff09;在 Conda 环境中安装 libgomp 如果符合标题情况 执行的&#xff1a; pip install "xinference[all]"大概率是最终解决的情况。 一、常规办法 llama-cpp-python 依赖 CMak…

OpenGL中绘制图形元素的实现(使用visual studio(C++)绘制一个矩形)

目标&#xff1a;使用OpenGL提供的函数绘制矩形、线段、三角形等基本图形元素 所需效果 实验步骤 1、配置OpenGL&#xff08;详情参见OpenGL的配置&#xff09; 2、头文件引入 #include <gl/glut.h> 3、编写方法体 1>矩形实现 //绘制矩形 void DisplayRectangl…

庖丁解java(一篇文章学java)

(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念... 当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢? 请看下文... 关于决定开始写博文的介绍 …

面试高频#LeetCode#Hot100-字母异位词分组

题号链接 49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 1首先定义map集合一个String对应一个String[]集合&#xff0c;遍历字符串数组 2对其先进行拆分&#xff0c;拆分为字符数组&#xff0c;再进行排序&#xff0c;再转为字符串 3如果key值没有就创建一个字符…

esProc SPL vs DuckDB:多源数据处理谁更胜一筹?

DuckDB 和 esProc SPL 都支持多样数据源处理&#xff0c;这里比较一下两者的差异。 支持的数据源种类 DuckDB 支持的数据源类型覆盖了常见的文件格式&#xff08;如 CSV、Parquet、JSON、Excel&#xff09;、云存储&#xff08;如 AWS S3、Azure Blob Storage&#xff09;以及…

超精密工件小孔几何尺寸测量:自动化解决方案

下载链接&#xff1a;&#xff08;最新版本&#xff09;超精密工件小孔几何尺寸测量&#xff1a;自动化解决方案python脚本代码&#xff0c;可直接运行&#xff0c;内包含测试数据&#xff0c;亲测好用资源-CSDN文库 在现代制造业中&#xff0c;超精密工件的质量控制至关重要&a…

重生之我在学Vue--第11天 Vue 3 高级特性

重生之我在学Vue–第11天 Vue 3 高级特性 文章目录 重生之我在学Vue--第11天 Vue 3 高级特性前言一、Teleport&#xff1a;打破组件层级的瞬移术1. 什么是Teleport&#xff1f;2. 核心用法3. 实战技巧 二、Suspense&#xff1a;异步组件的优雅过渡1. 为什么需要Suspense&#x…

MCU的工作原理:嵌入式系统的控制核心

MCU的工作原理可以概括为以下几个步骤&#xff1a; 1. 初始化 上电后&#xff0c;MCU从Flash存储器中加载程序代码&#xff0c;并初始化外设和寄存器。 2. 任务执行 根据程序逻辑&#xff0c;MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…

游戏引擎学习第158天

回顾和今天的计划 我们在这里会实时编码一个完整的游戏&#xff0c;没有使用引擎或库&#xff0c;一切都由我们自己做所有的编程工作&#xff0c;游戏中的每一部分&#xff0c;无论需要做什么&#xff0c;我们都亲自实现&#xff0c;并展示如何完成这些任务。今天&#xff0c;…