Docker基础命令说明

devtools/2025/3/14 22:59:13/

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 start my-container
# 停止容器
docker stop my-container
# 重启容器
docker restart my-container
docker exec -it my-container bash

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

docker rm my-container

注意:
1、不能删除一个正在run的程序;
2、如果一个image下启动了一个或多个容器,且容器正在运行。如果要删除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 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 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.ppmy.cn/devtools/167132.html

相关文章

vue中,watch里,this为undefined的两种解决办法

提示:vue中,watch里,this为undefined的两种解决办法 文章目录 [TOC](文章目录) 前言一、问题二、方法1——使用function函数代替箭头函数()>{}三、方法2——使用that总结 前言 ‌‌‌‌‌尽量使用方法1——使用function函数代替箭头函数()…

TCP/IP原理详细解析

前言 TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…

第13章贪心算法

贪心算法 局部最优求得总体最优 适用于桌上有6张纸币,面额为100 100 50 50 50 10,问怎么能拿走3张纸币,总面额最大?—拿单位价值最高的 只关注局部最优----关注拿一张的最大值拆解-----拿三次最大的纸币 不适用于桌面三件物品&am…

RabbitMQ五种消息模型

RabbitMQ 是一款基于 AMQP 协议的高性能消息中间件,广泛应用于分布式系统中,用于实现服务之间的异步通信、解耦和负载均衡。RabbitMQ 提供了五种常见的消息模型,每种模型都有其独特的特点和适用场景。本文将详细介绍这五种消息模型&#xff0…

在 VMware 中安装 Ubuntu 的超详细实战分享

目录 1. 安装准备VMware 软件获取Ubuntu 镜像获取 2. 创建新的虚拟机基础配置自定义硬件设置 3. Ubuntu 系统安装过程启动虚拟机正式安装 Ubuntu安装过程中常见问题 4. 安装后优化安装 VMware Tools系统更新与软件安装分辨率与显示设置 5. 常见故障及解决方案黑屏或安装卡顿网络…

接口测试工具:postman详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Postman 是一款功能强大的 API 开发和测试工具,以下是一些高级用法的详细介绍和操作步骤。 一、环境和全局变量 环境变量允许你设置特定于环境&#…

Gartner发布量子网络安全策略指南:2030年量子计算将能够破坏传统的加密算法

攻击者采用“先收集后解密”策略,为企业带来隐患。加密数据流目前无法读取,但可以保存,直到量子计算能够解密。I&O 领导者可以通过实施后量子密码学策略来降低这种风险。 主要发现 密码相关量子计算机 (CRQC) 将能够在数小时而不是数年内…

Kubernetes(K8s)集群中使用 GPU

在 Kubernetes(K8s)集群中使用 GPU,需要完成安装驱动、部署插件、配置 containerd、实现 GPU 虚拟化及部分使用等一系列步骤,下面为你详细介绍。 1. 安装 GPU 驱动 以 NVIDIA GPU 为例,因为在深度学习和机器学习场景…