Docker容器日常维护常用命令大全
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台deepseek-v3模型生成,文中所有命令未进行验证,仅供参考。请根据具体情况和需求进行适当的调整和验证。
引言
Docker作为当前最流行的容器化技术,已经成为了开发和运维人员的必备工具。然而,随着容器数量的增加和应用的复杂化,如何高效地管理和维护Docker容器成为了一个关键问题。本文将详细介绍Docker容器日常维护中常用的命令,帮助你从入门到精通,轻松应对各种容器管理场景。

1. 查看容器状态
1.1 查看运行中的容器
docker ps
该命令可以列出当前正在运行的容器。默认情况下,docker ps只显示运行中的容器。如果你想查看所有容器(包括已停止的),可以使用-a选项:
docker ps -a
1.2 查看容器详细信息
docker inspect <container_id>
docker inspect命令可以查看容器的详细信息,包括网络配置、挂载卷、环境变量等。<container_id>可以是容器的ID或名称。
2. 启动与停止容器
2.1 启动容器
docker start <container_id>
该命令用于启动一个已经停止的容器。
2.2 停止容器
docker stop <container_id>
该命令用于停止一个正在运行的容器。Docker会先发送SIGTERM信号,等待容器优雅关闭,如果容器未在规定时间内关闭,则发送SIGKILL信号强制终止。
2.3 重启容器
docker restart <container_id>
该命令用于重启一个容器,相当于先停止再启动。
3. 进入容器
3.1 进入容器的交互式终端
docker exec -it <container_id> /bin/bash
docker exec命令可以在运行的容器中执行命令。-it选项表示以交互模式运行,并分配一个伪终端。/bin/bash是进入容器后要执行的命令,通常用于启动一个bash shell。
3.2 查看容器日志
docker logs <container_id>
该命令用于查看容器的日志输出。你可以使用-f选项来实时跟踪日志输出:
docker logs -f <container_id>
4. 删除容器
4.1 删除已停止的容器
docker rm <container_id>
该命令用于删除一个已停止的容器。如果容器仍在运行,需要先停止容器再删除。
4.2 强制删除容器
docker rm -f <container_id>
-f选项可以强制删除一个正在运行的容器,无需先停止。
4.3 删除所有已停止的容器
docker container prune
该命令可以删除所有已停止的容器,释放磁盘空间。
5. 容器网络管理
5.1 查看容器网络信息
docker network ls
该命令列出所有Docker网络。
5.2 查看容器网络详细信息
docker network inspect <network_name>
该命令可以查看指定网络的详细信息,包括连接的容器、IP地址等。
5.3 连接容器到网络
docker network connect <network_name> <container_id>
该命令将指定容器连接到指定网络。
5.4 断开容器与网络的连接
docker network disconnect <network_name> <container_id>
该命令将指定容器从指定网络断开。
6. 容器资源管理
6.1 查看容器资源使用情况
docker stats <container_id>
该命令实时显示容器的资源使用情况,包括CPU、内存、网络I/O等。
6.2 限制容器资源使用
docker run -it --cpus="1.5" --memory="512m" <image_name>
在启动容器时,可以使用--cpus和--memory选项来限制容器的CPU和内存使用。
7. 容器镜像管理
7.1 查看本地镜像
docker images
该命令列出本地所有的Docker镜像。
7.2 删除本地镜像
docker rmi <image_id>
该命令用于删除本地的一个Docker镜像。
7.3 拉取远程镜像
docker pull <image_name>
该命令从Docker Hub或其他镜像仓库拉取指定的镜像。
7.4 推送镜像到远程仓库
docker push <image_name>
该命令将本地镜像推送到远程仓库。
8. 容器数据管理
8.1 创建数据卷
docker volume create <volume_name>
该命令用于创建一个Docker数据卷。数据卷是独立于容器的持久化存储方式,适合存储需要长期保存的数据。
8.2 查看数据卷列表
docker volume ls
该命令列出所有已创建的Docker数据卷。
8.3 查看数据卷详细信息
docker volume inspect <volume_name>
该命令可以查看指定数据卷的详细信息,包括挂载路径、驱动类型等。
8.4 删除数据卷
docker volume rm <volume_name>
该命令用于删除一个数据卷。如果数据卷正在被容器使用,需要先停止相关容器。
8.5 挂载数据卷到容器
docker run -v <volume_name>:/path/in/container <image_name>
在启动容器时,可以使用-v选项将数据卷挂载到容器内的指定路径。
8.6 挂载主机目录到容器
docker run -v /host/path:/container/path <image_name>
该命令将主机上的目录挂载到容器内的指定路径,实现主机与容器之间的文件共享。
8.7 清理未使用的数据卷
docker volume prune
该命令删除所有未被使用的数据卷,释放磁盘空间。
9. 容器健康检查
9.1 查看容器健康状态
docker inspect --format='{{json .State.Health}}' <container_id>
该命令可以查看容器的健康检查状态,包括健康状态、检查日志等。
9.2 定义容器的健康检查
在Dockerfile中,可以使用HEALTHCHECK指令定义容器的健康检查策略。例如:
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost/ || exit 1
该指令会每隔30秒检查一次容器是否健康,超时时间为10秒,重试3次。
10. 容器编排与管理
10.1 使用Docker Compose启动多容器应用
docker-compose up -d
该命令根据docker-compose.yml文件启动多个容器,-d选项表示在后台运行。
10.2 停止并删除Docker Compose应用
docker-compose down
该命令停止并删除由docker-compose up启动的所有容器。
10.3 查看Docker Compose服务状态
docker-compose ps
该命令列出当前Docker Compose项目的所有服务状态。
11. 容器备份与恢复
11.1 导出容器为tar文件
docker export <container_id> > container.tar
该命令将容器的文件系统导出为一个tar文件,适合用于备份。
11.2 从tar文件导入容器
docker import container.tar <image_name>
该命令将tar文件导入为一个Docker镜像,可以用于恢复容器。
11.3 提交容器为镜像
docker commit <container_id> <image_name>
该命令将当前容器的状态保存为一个新的镜像,适合用于保存容器的修改。
12. 容器安全与权限管理
12.1 以非root用户运行容器
docker run -u <user_id> <image_name>
该命令以指定的用户ID运行容器,避免以root用户运行带来的安全隐患。
12.2 限制容器的权限
docker run --cap-drop=ALL --cap-add=<capability> <image_name>
该命令通过--cap-drop和--cap-add选项限制容器的权限,只允许容器使用指定的Linux能力。
12.3 查看容器的安全配置
docker inspect --format='{{json .HostConfig.SecurityOpt}}' <container_id>
该命令可以查看容器的安全配置,包括SELinux、AppArmor等。
13. 容器日志管理
13.1 查看容器日志
docker logs <container_id>
该命令查看容器的日志输出。
13.2 实时跟踪容器日志
docker logs -f <container_id>
该命令实时跟踪容器的日志输出。
13.3 限制日志大小
docker run --log-opt max-size=10m --log-opt max-file=3 <image_name>
该命令限制容器的日志文件大小和数量。max-size指定单个日志文件的最大大小(如10MB),max-file指定保留的日志文件数量(如3个)。
13.4 清理容器日志
truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_id>)
该命令清空指定容器的日志文件内容,但保留日志文件本身。
13.5 查看容器的日志驱动
docker inspect --format='{{.HostConfig.LogConfig.Type}}' <container_id>
该命令查看容器使用的日志驱动类型,如json-file、syslog等。
14. 容器性能监控
14.1 查看容器的资源使用情况
docker stats <container_id>
该命令实时显示容器的CPU、内存、网络I/O等资源使用情况。
14.2 查看容器的进程列表
docker top <container_id>
该命令查看容器内运行的进程列表,类似于主机上的top命令。
14.3 查看容器的资源限制
docker inspect --format='{{.HostConfig.Memory}}' <container_id> docker inspect --format='{{.HostConfig.CpuShares}}' <container_id>
这些命令分别查看容器的内存和CPU限制。
15. 容器网络调试
15.1 查看容器的网络配置
docker inspect --format='{{.NetworkSettings}}' <container_id>
该命令查看容器的网络配置,包括IP地址、网关、DNS等。
15.2 测试容器的网络连通性
docker exec <container_id> ping <target_host>
该命令在容器内执行ping命令,测试网络连通性。
15.3 查看容器的端口映射
docker port <container_id>
该命令查看容器的端口映射情况,显示容器端口与主机端口的对应关系。
16. 容器更新与回滚
16.1 更新容器镜像
docker pull <image_name> docker stop <container_id> docker rm <container_id> docker run --name <new_container_name> <image_name>
通过拉取新版本的镜像并重新启动容器,实现容器的更新。
16.2 回滚容器到旧版本
docker tag <old_image_id> <image_name>:<old_version> docker stop <container_id> docker rm <container_id> docker run --name <new_container_name> <image_name>:<old_version>
通过使用旧版本的镜像重新启动容器,实现容器的回滚。
17. 容器批量操作
17.1 批量停止所有容器
docker stop $(docker ps -q)
该命令停止所有正在运行的容器。
17.2 批量删除所有容器
docker rm $(docker ps -aq)
该命令删除所有容器(包括已停止的)。
17.3 批量删除所有镜像
docker rmi $(docker images -q)
该命令删除所有本地镜像。
17.4 批量清理未使用的资源
docker system prune -a
该命令清理所有未使用的容器、镜像、网络和数据卷,释放磁盘空间。
18. 容器与主机的交互
18.1 从主机复制文件到容器
docker cp /host/path/file.txt <container_id>:/container/path/
该命令将主机上的文件复制到容器内的指定路径。
18.2 从容器复制文件到主机
docker cp <container_id>:/container/path/file.txt /host/path/
该命令将容器内的文件复制到主机上的指定路径。
19. 容器调试与故障排查
19.1 查看容器的启动日志
docker logs <container_id>
该命令查看容器的启动日志,帮助排查启动失败的原因。
19.2 进入容器的调试模式
docker run -it --entrypoint /bin/sh <image_name>
该命令以交互模式启动容器,并进入调试Shell。
19.3 查看容器的退出状态
docker inspect --format='{{.State.ExitCode}}' <container_id>
该命令查看容器的退出状态码,帮助判断容器是否正常退出。
19.4 查看容器的启动命令
docker inspect --format='{{.Config.Cmd}}' <container_id>
该命令查看容器的启动命令,帮助排查启动问题。
19.5 查看容器的环境变量
docker inspect --format='{{.Config.Env}}' <container_id>
该命令查看容器的环境变量,帮助排查配置问题。
20. 容器与Docker Swarm集成
20.1 初始化Docker Swarm
docker swarm init
该命令初始化一个Docker Swarm集群。
20.2 加入Docker Swarm集群
docker swarm join --token <token> <manager_ip>:<port>
该命令将当前节点加入Docker Swarm集群。
20.3 查看Swarm节点状态
docker node ls
该命令列出Swarm集群中的所有节点及其状态。
20.4 部署服务到Swarm集群
docker service create --name <service_name> <image_name>
该命令在Swarm集群中部署一个服务。
20.5 查看Swarm服务状态
docker service ps <service_name>
该命令查看指定服务的任务状态。
21. 容器与Kubernetes集成
21.1 创建Kubernetes Deployment
kubectl create deployment <deployment_name> --image=<image_name>
该命令创建一个Kubernetes Deployment。
21.2 查看Kubernetes Pod状态
kubectl get pods
该命令列出所有Kubernetes Pod及其状态。
21.3 查看Kubernetes日志
kubectl logs <pod_name>
该命令查看指定Pod的日志。
21.4 进入Kubernetes Pod的Shell
kubectl exec -it <pod_name> -- /bin/sh
该命令进入指定Pod的Shell,用于调试。
22. 容器安全最佳实践
22.1 使用最小化基础镜像
尽量使用轻量级的基础镜像(如alpine),减少攻击面。
22.2 定期更新镜像
docker pull <image_name>
定期拉取最新版本的镜像,确保安全漏洞得到修复。
22.3 限制容器的权限
docker run --cap-drop=ALL --cap-add=<capability> <image_name>
通过--cap-drop和--cap-add选项限制容器的权限。
22.4 使用只读文件系统
docker run --read-only <image_name>
该命令以只读模式运行容器,防止文件系统被篡改。
22.5 启用容器安全扫描
使用工具(如Clair、Trivy)扫描镜像中的安全漏洞。
23. 容器自动化与脚本
23.1 使用Shell脚本管理容器
编写Shell脚本批量启动、停止或删除容器,提高效率。
23.2 使用Ansible管理容器
使用Ansible的Docker模块自动化容器管理任务。
23.3 使用CI/CD集成容器
将容器构建和部署集成到CI/CD流水线中,实现自动化。
24. 总结
本文详细介绍了Docker容器日常维护中常用的命令,涵盖了容器状态查看、启动与停止、日志管理、网络调试、性能监控、数据管理、安全实践等多个方面。掌握这些命令可以帮助你高效地管理和维护Docker容器,提升开发和运维效率。
无论是初学者还是经验丰富的用户,都可以从本文中找到实用的技巧和最佳实践。希望本文能成为你日常工作中的参考指南,助你在Docker的世界中游刃有余!
如果你有任何问题或建议,欢迎在评论区留言,我们一起交流学习!
相关文章:
Docker容器日常维护常用命令大全
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台deepseek-v3模型生成,文中所有命令未进行验证,仅供参考。请根据具体情况和需求进行适当的调整和验证。 引言 Docker作为当前最流行的容器化技术…...
《昇腾推理服务器+DeepSeek大模型》技术培训在图为科技成功举办
2月17日,华为政企业务团队受邀莅临图为科技深圳总部,并成功举办了一场聚焦于《昇腾推理服务器DeepSeek大模型》的专业知识培训。 此次培训活动不仅深化了双方的技术交流,更标志着昇腾AI与DeepSeek大模型的全面融合应用即将迈入实质性落地的新…...
【Java环境】配置极简描述
241220 241220 241220 Java环境配置 下载JDK 注意:最好下载 Long-Term SupportLTS,长期支持版本【目前是JDK21】 下载地址:Java Downloads | Oracle. 下载这个:x64 Installer 。 安装时,路径可改,其余无…...
DeepSeek开源周Day5: 3FS存储系统与AI数据处理新标杆
项目地址: GitHub - deepseek-ai/3FS: A high-performance distributed file system designed to address the challenges of AI training and inference workloads.GitHub - deepseek-ai/smallpond: A lightweight data processing framework built on DuckDB and…...
FastAPI系列:如何配置跨域访问(CORS)
默认情况下,FastAPI应用程序不允许来自不同来源的请求。当你有一个前端应用程序与后端API通信,并且它们托管在不同的域或端口上时,在FastAPI中允许来自不同来源的请求是一种常见的场景。这被称为CORS(跨域资源共享)&am…...
Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存
Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 目录 Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 一、简单介绍 二、简单介绍 camera 三、安装 camera 四、简单案例实现 五、关键代码 一、简单…...
【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化
【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化 1. ollama安装1.1 linux安装1.2 windows安装2. deepSeek支持的7种蒸馏模型2.1 蒸馏模型介绍2.2 7种模型特点2.3 安装deepseek-r1:14b模型3. openwebui图形化页面安装4. java连接大模型的三…...
【Vue3 Teleport 技术解析:破解弹窗吸附与滚动列表的布局困局】
🌟 Vue3 Teleport 技术解析:破解弹窗吸附与滚动列表的布局困局 🌍 背景:传统组件嵌套的布局之痛 在传统前端开发中,组件往往被严格限制在父级 DOM 结构中,这导致三大典型问题: 层级监禁 &…...
鸿蒙HarmonyOS 开发简介
鸿蒙开发入门教程 一、技术简介 鸿蒙操作系统(HarmonyOS)是面向万物互联时代的全场景分布式操作系统,具备分布式软总线、分布式数据管理、分布式任务调度等核心能力,能让设备间实现无缝连接与协同,为用户提供统一、流…...
VBA技术资料MF276:在集合中使用键
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...
谈谈 Node.js 中的文件系统(fs)模块,如何进行文件读写操作?
Node.js 文件系统(fs)模块深度解析与实践指南 一、模块基础与核心能力 Node.js 的 fs 模块提供了完整的文件系统操作能力,涵盖 50 个方法,主要分为以下类型: 文件读写:基础 CRUD 操作目录操作࿱…...
Python Cookbook-2.18 从指定的搜索路径寻找文件
任务 给定一个搜索路径(一个描述目录信息的字符串),需要根据这个路径和请求的文件名找到第一个符合要求的文件。 解决方案 需要循环指定的搜索路径中的目录: import os def search_file(filename,search path,pathsepos.pathsep): """…...
安装Git(小白也会装)
一、官网下载:Git 1.依次点击(红框) 不要安装在C盘了,要炸了!!! 后面都 使用默认就好了,不用改,直接Next! 直到这里,选第一个 这两种选项的区别如…...
工学一体化教育模式的核心内涵及实践意义探究
工学一体化是一种将理论教学与实践操作深度融合的教育模式,旨在通过工作过程与学习过程的有机结合,培养具备综合职业能力和创新能力的技能人才。 一、工学一体化的核心内涵 工学一体化教学模式强调“在工作中学习、在学习中工作”,其核心在于…...
前端正则表达式完全指南:从入门到实战
文章目录 第一章:正则表达式基础概念1.1 什么是正则表达式1.2 正则表达式工作原理1.3 基础示例演示 第二章:正则表达式核心语法2.1 元字符大全表2.2 量词系统详解2.3 字符集合与排除 第三章:前端常用正则模式3.1 表单验证类3.1.1 邮箱验证3.1…...
Chromium项目相关
Chromium项目相关 Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的方式来体验 Web。 自 Google 在 2008 年宣布 Chromium 项目以来,他们一直很高兴能够在开源 Web 浏览器的良好基础上进行构建,并为富 Web 平…...
自动驾驶测试场景相关概念
自动驾驶测试场景 一、概念二、分类2.1、按照场景的抽象程度可分为:功能场景、逻辑场景、具体场景。2.2.、按功能划分2.3、 按环境复杂度2.3、按场景类型 三、要素四、挑战与趋势4.1、长尾场景覆盖4.2、伦理决策测试4.3、车路协同测试4.4、联邦学习驱动…...
给小白的oracle优化工具,了解一下
有时懒得分析或语句太长,可以尝试用oracle的dbms_sqldiag包进行sql优化, --How To Use DBMS_SQLDIAG To Diagnose Query Performance Issues (Doc ID 1386802.1) --诊断SQL 性能 SET ECHO ON SET LINESIZE 132 SET PAGESIZE 999 SET LONG 999999 SET SER…...
DMA发送全部历史记录数据到串口
背景 博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。最后商量得出以下实现方案: 定义两个发送缓冲区DMATxbuf1和DMATxbuf2&…...
基因型—环境两向表数据分析——品种生态区划分
参考资料:农作物品种试验数据管理与分析 用于品种生态区划分的GGE双标图有两种功能图:试点向量功能图和“谁赢在哪里”功能图。双标图的具体模型基于SD定标和h加权和试点中心化的数据。本例中籽粒产量的GGE双标图仅解释了G和GE总变异的53.6%,…...
电路中如何计算电容容值大小
一个例题: 【电路中电容容值是怎么算出来的?】https://www.bilibili.com/video/BV1RQ4y1c7i1?vd_source3cc3c07b09206097d0d8b0aefdf07958...
c++中迭代器和指针有什么区别?
在 C 中,迭代器和指针虽然在某些场景下有相似的行为,但它们在设计目的、功能和使用场景上有本质区别。以下是详细对比和最佳实践: 一、核心区别对比表 特征指针迭代器本质原生数据类型,直接存储内存地址类对象,抽象容…...
GPT大语言模型与搜索引擎:技术本质与应用场景的深度解析
引言 在人工智能和自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)大语言模型和搜索引擎是两个备受关注的技术。尽管它们都涉及到信息检索和生成,但它们在技术原理、应用场景和用户体验上…...
FreeRTOS-中断管理
实验目的 创建一个队列及一个任务,按下按键 KEY1 触发中断,在中断服务函数里向队列里发送数据,任务则阻塞接 收队列数据。 实验代码 实验结果 这样就实现了,使用中断往队列的发送信息,用任务阻塞接收信息...
计算机毕业设计SpringBoot+Vue.js音乐网站(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
更换k8s容器运行时环境为docker
更换k8s容器运行时环境为docker k8s-V1.24之后容器运行时默认是containerd,若想改为熟悉的docker作为运行时,需要做以下操作 在每个节点安装containerd、docker; 每个节点安装cri-docker; 调整kubelet配置并重启验证。 1.安装docker、con…...
知识图谱-资源网
知识图谱-资源网 http://openkg.cn/datasets-type/https://www.ownthink.com/knowledge.html...
CTF-web: Rust 的过程宏
Rust 的过程宏(Procedural Macros)是一种强大的元编程工具,允许你在编译时对代码进行操作和生成。与属性宏和派生宏不同,过程宏可以接收并处理任意 Rust 代码,生成新的代码片段。这里有一个简单的例子来说明 Rust 的过…...
小程序Three Dof识别 实现景区AR体验
代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof...
Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程
文章目录 Windows 11 在 D 盘正确安装 Docker Desktop 的完整教程**前言****准备工作****1. 手动创建 Docker 相关目录**(⚠️ **这一步非常重要**,否则会报错)**2. 下载 Docker Desktop 安装程序****3. 使用管理员权限打开终端** **安装 Doc…...
