Docker 容器自动化管理之脚本(Script for Docker Container Automation Management)
Docker 容器自动化管理之脚本
简介
Docker是一个开源的容器化平台,旨在简化应用程序的开发、部署和运行过程。它通过将应用程序及其依赖项打包到一个可移植的容器中,使得开发人员能够在不同的环境中以一致的方式构建、打包和分发应用程序。
Docker的核心概念
- 容器(Container):容器是Docker的基本部署单元,是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用Linux内核的命名空间和控制组技术,实现了隔离性和资源管理。
- 镜像(Image):镜像是一个只读的模板,包含创建Docker容器的指令。它类似于虚拟机的快照,可以从Docker Hub下载或自己创建。
- Dockerfile:用于构建Docker镜像的文本文件,包含构建镜像所需的所有命令,如安装软件、拷贝文件等。
- Docker Registry:用于存储Docker镜像的仓库,Docker Hub是最常用的公共仓库。
Docker的历史背景和开发者
Docker最初是由dotCloud公司开发的内部项目,后来开源并更名为Docker Inc。Docker于2013年首次发布,基于Google的Go语言实现。项目代码在GitHub上进行维护,并遵从Apache 2.0协议。
Docker的主要版本
Docker主要有两个版本:
- Docker CE(Community Edition):免费版本,适合个人开发者和小型团队,包含核心Docker功能。
- Docker EE(Enterprise Edition):付费版本,面向企业级用户,提供额外的安全、管理和支持功能。
Docker的应用场景和优势
Docker的应用场景包括简化不同环境配置差异、代码流水线管理和提升开发效率。其优势在于轻量级、可移植和高效的工作方式,能够快速部署应用程序,实现弹性扩展和服务编排。通过使用Docker,开发人员可以更轻松地创建一个可靠的开发环境,并管理多容器应用程序
每个示例都附带功能代码和详细解释。
1. 自动启动所有容器
有时在系统重启或维护后,您可能希望一次性启动所有停止的容器。
#!/bin/bash
# 启动所有停止的容器
docker start $(docker ps -aq)
-
'docker ps -aq' 列出所有容器 ID(停止和运行)。
-
'docker start' 通过传递 ID 作为参数来启动容器。
2. 停止所有运行中的容器
快速停止所有当前运行的容器。
#!/bin/bash
# 停止所有运行中的容器
docker stop $(docker ps -q)
-
'docker ps -q' 列出仅运行中的容器 ID。
-
'docker stop' 停止这些容器。
3. 删除停止的容器
通过清理停止的容器来释放空间。
#!/bin/bash
# 删除所有停止的容器
docker rm $(docker ps -aq -f "status=exited")
-
docker ps -aq -f "status=exited"
过滤停止的容器。 -
'docker rm' 删除它们。
4. 删除dangling的镜像
清除未使用的 Docker 镜像以节省磁盘空间。
#!/bin/bash
# 删除dangling 镜像
docker rmi $(docker images -q -f "dangling=true")
-
docker images -q -f "dangling=true"
列出无标签的镜像 ID(悬空)。 -
'docker rmi' 删除这些镜像。
5. 备份容器的数据
将运行中的容器的文件系统导出到 tar 文件。
#!/bin/bash
# 备份容器的数据
CONTAINER_ID=$1
BACKUP_FILE="${CONTAINER_ID}_backup_$(date +%F).tar"
docker export $CONTAINER_ID > $BACKUP_FILE
echo "备份保存到 $BACKUP_FILE"
-
'docker export' 导出容器的文件系统。
-
将容器 ID 作为参数传递给脚本。
6. 从备份恢复容器
从 tar 备份文件中重新创建容器。
#!/bin/bash
# 从 tar 备份恢复容器
BACKUP_FILE=$1
docker import $BACKUP_FILE restored_container:latest
echo "容器恢复为 'restored_container:latest'"
-
'docker import' 从 tar 文件创建新镜像。
-
该镜像可用于启动新容器。
7. 监控容器的资源使用情况
显示所有运行中容器的实时统计信息。
#!/bin/bash
# 监控所有运行中容器的资源使用情况
docker stats --all
-
'docker stats' 显示实时的 CPU、内存和网络统计信息。
-
'--all' 包括停止的容器。
8. 自动重启容器
确保关键容器在失败后自动重启。
#!/bin/bash
# 使用重启策略重启容器
CONTAINER_NAME=$1
docker update --restart always $CONTAINER_NAME
echo "$CONTAINER_NAME 现在将在失败后自动重启。"
-
'docker update --restart always' 配置重启策略。
-
将容器名称作为参数传递。
9. 运行容器并在退出后清理
在容器停止后自动删除。
#!/bin/bash
# 运行容器并清理
IMAGE_NAME=$1
docker run --rm $IMAGE_NAME
-
'--rm' 在容器停止时删除容器。
-
适用于一次性任务。
10. 检查所有容器的日志
将多个容器的日志合并到一个输出中。
#!/bin/bash
# 显示所有容器的日志
docker ps -q | xargs -I {} docker logs {}
-
'docker ps -q' 列出运行中的容器 ID。
-
'xargs' 将这些 ID 传递给 'docker logs'。
11. 自动清理未使用的资源
安排自动清理未使用的 Docker 资源。
#!/bin/bash
# 清理未使用的资源
docker system prune -f --volumes
-
'docker system prune' 删除未使用的容器、网络和镜像。
-
'--volumes' 还删除未使用的卷。
12. 更新运行中的容器
使用最新版本的镜像重新创建容器。
#!/bin/bash
# 更新运行中的容器
CONTAINER_NAME=$1
IMAGE_NAME=$(docker inspect --format='{{.Config.Image}}' $CONTAINER_NAME)
docker pull $IMAGE_NAME
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
docker run -d --name $CONTAINER_NAME $IMAGE_NAME
-
'docker inspect' 获取容器的镜像名称。
-
脚本拉取最新镜像并重新创建容器。
13. 从容器复制文件
将文件或目录从容器提取到主机。
#!/bin/bash
# 从容器复制文件
CONTAINER_ID=$1
SOURCE_PATH=$2
DEST_PATH=$3
docker cp $CONTAINER_ID:$SOURCE_PATH $DEST_PATH
echo "从 $CONTAINER_ID 复制 $SOURCE_PATH 到 $DEST_PATH"
-
'docker cp' 在容器和主机之间复制文件。
-
将容器 ID、源路径和目标路径作为参数传递。
14. 重启所有容器
快速重启所有运行中的容器。
#!/bin/bash
# 重启所有容器
docker restart $(docker ps -q)
-
'docker restart' 通过 ID 重启容器。
15. 列出所有暴露的端口
检查运行中容器的暴露端口。
#!/bin/bash
# 列出所有暴露的端口
docker ps --format '{{.ID}}: {{.Ports}}'
-
'docker ps --format' 自定义输出以显示容器 ID 和端口。
请随意调整、实验和根据您的需求进行定制.
相关文章:
Docker 容器自动化管理之脚本(Script for Docker Container Automation Management)
Docker 容器自动化管理之脚本 简介 Docker是一个开源的容器化平台,旨在简化应用程序的开发、部署和运行过程。它通过将应用程序及其依赖项打包到一个可移植的容器中,使得开发人员能够在不同的环境中以一致的方式构建、打包和分发应用程序。 Docke…...
client-go中watch机制的一些陷阱
Reference https://stackoverflow.com/questions/51399407/watch-in-k8s-golang-api-watches-and-get-events-but-after-sometime-doesnt-get-an 问题描述 最近在使用 client-go 的 watch 机制监听 k8s 中的 deployment 资源时,发现一个奇怪的现象 先看下代码&a…...
用户界面的UML建模11
然而,在用户界面方面,重要的是要了解《boundary》类是如何与这个异常分层结构进行关联的。 《exception》类的对象可以作为《control》类的对象。因此,《exception》类能够聚合《boundary》类。 参见图12,《exception》Database…...
计算机网络之---数据链路层的功能与作用
数据链路层概念 数据链路层(Data Link Layer)是计算机网络中的第二层,它位于物理层和网络层之间,主要负责数据在物理链路上的可靠传输。其基本功能是将网络层传来的数据分成帧,并负责在物理链路上可靠地传输这些数据帧…...
添加到 PATH 环境变量中
命令解释 # 将命令中的<CLI_PATH>替换为您aliyun文件的所在目录。 echo export PATH$PATH:<CLI_PATH> >> ~/.bash_profile echo export PATH$PATH:/data2/ljsang/aliyun/aliyun >> ~/.bash_profileexport PATH$PATH:/data2/ljsang/aliyun/aliyun&…...
【51单片机零基础-chapter6:LCD1602调试工具】
实验0-用显示屏LCD验证自己的猜想 如同c的cout,前端的console.log() #include <REGX52.H> #include <INTRINS.H> #include "LCD1602.h" int var0; void main() {LCD_Init();LCD_ShowNum(1,1,var211,5);while(1){;} }实验1-编写LCD1602液晶显示屏驱动函…...
Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
在 Linux 内核的网络子系统中,netif_start_queue 函数扮演着至关重要的角色。这个函数的主要功能是启动(或启用)网络接口的发送队列,标志着网络接口已经准备好开始发送数据包。本文将深入探讨 netif_start_queue 函数的用途、工作原理以及在实际网络驱动代码中的应用。 函…...
(七)人工智能进阶之人脸识别:从刷脸支付到智能安防的奥秘,小白都可以入手的MTCNN+Arcface网络
零、开篇趣谈 还记得第一次用支付宝"刷脸"时的新奇感吗?或者被抖音的人脸特效逗乐的瞬间?这些有趣的应用背后,其实藏着一个精妙的AI世界。今天,就让我们开启一段奇妙的人脸识别技术探索之旅吧! 一、人脸识…...
ExcelDataReader:一个.Net高性能Excel开源读取器
推荐一个用于读取Microsoft Excel文件的高性能开源库。 01 项目简介 ExcelDataReader是一个功能强大且易于使用的开源项目,提供了丰富的读取API,专门读取Excel文件的数据,特别是处理大数据量的情况。 ExcelDataReader支持Excel版本从2007年…...
人工智能-机器学习之多元线性回归(项目实践一)
目标:运用scikit-learn进行多元线性回归方程的构建,通过实际案例的训练集和测试集进行预测,最终通过预测结果和MSE来评估预测的精度。 一、首先安装scikit-learn:pip install scikit-learn C:\Users\CMCC\PycharmProjects\AiPro…...
Mysql--基础篇--约束(主键,外键,唯一,检查,枚举及复合约束等)
在MySQL中,约束(Constraints)是用于确保数据库中数据完整性和一致性的规则。通过定义约束,可以防止用户插入、更新或删除不符合特定条件的数据,从而保证数据的准确性和可靠性。MySQL支持多种类型的约束,每种…...
经典多模态模型CLIP - 直观且详尽的解释
对比语言-图像预训练(CLIP),这是一种创新的多模态建模策略,能够创建视觉和语言的联合表示。CLIP 的效果非常出色,可以用于构建高度特定且性能卓越的分类器,而无需任何训练数据。本文将深入探讨其理论基础&a…...
着丝粒鉴定CentIER v3.0安装与使用-bioinfomatics tools41
使用CentIE鉴定着丝粒 T2T基因组端粒与着丝粒的区别及其鉴定方法-随笔02_chip-seq鉴定着丝粒-CSDN博客 T2T时代的基因组组装-文献精读-9_基因组t2t组装-CSDN博客 桑树T2T基因组-文献精读16_桑树基因组-CSDN博客 辣椒属2个T2T基因组-文献精读23_辣椒基因组-CSDN博客 大花…...
Objective-C语言的多线程编程
Objective-C语言的多线程编程 在现代应用程序开发中,尤其是移动应用开发,多线程编程是一个不可或缺的部分。使用多线程可以提升应用的响应能力,使得可以同时处理多个任务,从而优化用户体验。在本文中,我们将深入探讨O…...
Golang的并发编程框架比较
# Golang的并发编程框架比较 中的并发编程 在现代软件开发中,处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言,提供了丰富的并发编程框架和工具,使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…...
通过 oh-my-posh posh-git 优化PowerShell
转自oh-my-posh & posh-git 提升在 windows 环境的开发体验 oh-my-posh 是用于自定义 PowerShell 主题和配色的工具,posh-git 则是为 PowerShell 提供了方便的 git 状态显示和命令补全功能。 安装PowerShell 7和 winget下载器,都可以直接在 Microsof…...
【Linux系列】Vim 编辑器中的高效文本编辑技巧:删除操作
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
慧集通(DataLinkX)iPaaS集成平台-连接器
如何创建连接器? 连接器是用于跟各系统进行连接,是集成交互的基础构成也是主要构成之一;连接器一般是根据业务系统的开放的不同方式由开发人员进行封装,封装完成后交付人员可以在所有连接那里建立对应的连接,连接需要…...
vue3使用vue3-video-play播放m3u8视频
1.安装vue3-video-play npm install vue3-video-play --save2.在组件中使用 import vue3-video-play/dist/style.css; import VideoPlay from vue3-video-play;// 视频配置项 const options reactive({src: https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8, //视频源mute…...
单片机-外部中断
中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B,请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的…...
《C++11》右值引用深度解析:性能优化的秘密武器
C11引入了一个新的概念——右值引用,这是一个相当深奥且重要的概念。为了理解右值引用,我们需要先理解左值和右值的概念,然后再理解左值引用和右值引用。本文将详细解析这些概念,并通过实例进行说明,以揭示右值引用如何…...
【HTML+CSS+JS+VUE】web前端教程-1-VScode开发者工具快捷键
VScode打开文件夹与创建文件 1、选择文件夹 2、拖拽文件夹 生成浏览器文件.html的快捷方式 ! 回车vscode常用快捷键列表 代码格式化:shift alt F 向上或向下移动一行: alt up 或者 alt down 快速复制一行代码:shift alt up 或者 sh…...
【嵌入式硬件】直流电机驱动相关
项目场景: 驱动履带车(双直流电机)前进、后退、转弯 问题描述 电机驱动MOS管烧毁 电机驱动采用IR2104STRH1R403NL的H桥方案(这是修改之后的图) 原因分析: 1.主要原因是4路PWM没有限幅,修改…...
接口测试-postman(使用postman测试接口笔记)
一、设置全局变量 1. 点击右上角设置按钮-》打开管理环境窗口-》选择”全局“-》设置变量名称,初始值和当前值设置一样的,放host放拼接的url,key放鉴权那一串字符,然后保存-》去使用全局变量,用{{变量名称}}形式 二、…...
强化学习常用库的版本对应关系
本文介绍了pytorch强化学习框架和常用python库的对应关系。 持续更新中! 基础包 工具包版本描述python3.9.13-numpy1.24.3-protobuf3.19.6结构化数据包cython0.29.21静态编译器setuptools66.0.0-学习框架 工...
Unity 热更新基础知识
文章目录 1.一些名词2.三种编译方式3.Unity 两种脚本后端3.1 Mono3.2 IL2CPP3.3 对比 1.一些名词 IL(Intermediate Language):中间语言(类似于汇编代码)CIL(Common Intermediate Language)&…...
JetBrains IDEs和Visual Studio Code的对比
JetBrains IDEs和Visual Studio Code的对比 JetBrains IDEs是捷克JetBrains公司开发的一系列集成开发环境(IDE)。以下是具体介绍:IntelliJ IDEA是JetBrains 公司的一款产品 主要产品 IntelliJ IDEA:一款功能强大且广泛应用的Java集成开发环境,有开源免费的社区版和商业收…...
C语言将点分十进制的IP字符串转成4个整数
最近在做lldp的snmp返回值时需要做这样的转换处理:C语言将点分十进制的IP字符串转成4个整数。 这里用两种方式: sscanf格式化处理用 inet_aton函数将ip字符串转成32位的整形,然后再根据bit转成对应的4个整数。 man命令可以确认下sscanf和i…...
慧集通(DataLinkX)iPaaS集成平台:数据流程的基本操作
流程搭建与发布 该功能下是我们集成的流程配置实现,在这里我们可以通过搭建一条条不同的流程来实现不同的业务场景。列表界面如下所示: 下面我们做一个业务场景的流程来具体讲解下该功能(OA销售单推送T销售出库单场景)。 首先…...
三线结构光避障远近有度,石头自清洁扫拖机器人G30上市
1月8日,石头科技发布新一代自清洁扫拖机器人产品G30,以卓越的旗舰级性能,为用户带来了更为全面极致的清洁体验。在本届CES2025展会期间,石头G30现身石头科技展台,彰显极致清洁科技。 据「TMT星球」了解,石头…...
深入理解 React 中 setState 的行为及状态更新时机
在 React 开发中,setState 是我们更新组件状态的核心 API。然而,setState 的行为因调用场景的不同而有所变化,这可能会让许多开发者感到困惑。特别是在 React 18 中,引入了自动批量更新机制,使得部分场景的行为发生了变…...
一次完成Win10下MySQL 9.1 的安装
文章目录 前言一、 安装环境二、 安装方式选择三、下载四、安装 总结 前言 一、 安装环境 1、MySQL9.1.0.zip 下载地址:https://dev.mysql.com/downloads/mysql/ 2、Win10 3、客户端MySQL Workbench8.0 CE 下载地址:https://dev.mysql.com/downloads/w…...
有限元分析学习——Anasys Workbanch第一阶段笔记(8)水杯案例的对称与轴对称处理
目录 1 序言 2 对称处理 2.1 模型处理 2.2 网格划分、约束载荷及接触设置 2.3 计算结果 3 轴对称处理 3.1 对称与轴对称概念 3.2 轴对称问题的应用 3.2.1 创建分析案例 3.2.2 导入并处理模型 3.2.3 网格划分、约束载荷及接触设置 3.2.4 后处理计算结果 1 序言 本章…...
Vmware安装centos
用来记录自己安装的过程 一、创建虚拟机安装centos镜像 点击完成后,等待一会会进入centos的系统初始化界面 二、centos初始化配置 三、配置网络 1、虚拟网络编辑器,开启VMnet1、VMnet8的DHCP vmware左上角工具栏,点击【编辑】->【虚拟网…...
[Unity]MacOS下开发Unity
需要的插件 我使用的是vscode,经过长时间的使用我发现一个问题就是很多插件都是动态的在变化的,不是一成不变的,可能是重构,可能直接换了其他的工具。 所以这个插件也会是更新的状态。 2025年01月08日更新 .NET Install Tool …...
快手短剧播放器uniapp如何引入与对接?
uniApp前端微短剧项目开源分享 开源地址:git开源下载地址 文章目录 快手短剧播放器uniapp如何引入与对接?1.引入短剧播放器2.创建文件kscomponents组件3.local-stream.js文件说明4.用户行为事件4.local-stream.ksml文件参考如下 快手短剧播放器uniapp如何…...
Java 数据结构之-LinkedHashMap
继承关系和基本概念 LinkedHashMap是HashMap的子类,它继承了HashMap的基本功能。它在HashMap的基础上,通过维护一个双向链表来记录元素的插入顺序或者访问顺序(可以通过构造函数指定),从而在遍历元素时能够按照特定的顺…...
记一次踩坑:json.Unmarshal() 解析数字类型
首先我们先明确下 json 包下 Unmarshal() 函数是什么: 它是 Go 语言标准库 encoding/json 中的一个函数,用于将 JSON 数据解析为 Go 语言中的数据结构。它的作用是将一个 JSON 格式的字节切片([]byte)转换为对应的 Go 语言数据类…...
leetcode78.子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1,2],[3],…...
docker学习记录:创建mongodb副本集
目的,是创建三个,避免出现错误时,仍然能正常工作。 要在 Docker 中创建一个 MongoDB 集群(副本集),并确保数据存储在本地,同时允许局域网访问,你可以按照以下步骤进行操作。我们将创…...
JAVA学习-练习试用Java实现“从用户输入获取一个字符串,并使用split方法将其拆分为单词数组,然后打印出所有单词”
问题: 创建一个Java程序,从用户输入获取一个字符串,并使用split方法将其拆分为单词数组,然后打印出所有单词。 解答思路: 以下是一个Java程序,它从用户输入获取一个字符串,并使用 split 方法…...
网络安全 | 数据隐私保护:全球趋势与合规要求
网络安全 | 数据隐私保护:全球趋势与合规要求 一、前言二、全球数据隐私保护的主要趋势2.1 法律法规的强化2.2 消费者意识的觉醒2.3 技术创新推动隐私保护升级 三、不同国家和地区的数据隐私法规3.1 欧盟《通用数据保护条例》(GDPR)3.2 美国《…...
2025年度流行色揭晓:温暖舒适的摩卡慕斯
近日,全球色彩权威机构Pantone公布了2025年度流行色——PANTONE 17-1230 Mocha Mousse (摩卡慕斯)。这是一种温暖的柔和棕色,蕴含着内在的丰富质感,让人联想到可可、巧克力和咖啡的美味质量,满足我们对舒适和简单愉悦的渴望。 Pan…...
el-table拖拽表格
1、拖拽插件安装 npm i -S vuedraggable // vuedraggable依赖Sortable.js,我们可以直接引入Sortable使用Sortable的特性。 // vuedraggable是Sortable的一种加强,实现组件化的思想,可以结合Vue,使用起来更方便。 2、引入拖拽函数…...
Oracle LiveLabs实验: Multitenant Advanced Capabilities
本文为Oracle LiveLabs中实验Multitenant Advanced Capabilities的过程记录。 本实验不提供云上的免费环境,需要利用你自己的OCI账号来创建环境。 实验环境是通过OCI中的Stack,也就是Terraform自动创建的。 Oracle Resource Manager (ORM) stack 文件…...
【大模型】百度千帆大模型对接LangChain使用详解
目录 一、前言 二、LangChain架构与核心组件 2.1 LangChain 核心架构 2.2 LangChain 核心组件 三、环境准备 3.1 前置准备 3.1.1 创建应用并获取apikey 3.1.2 开通付费功能 3.2 获取LangChain文档 3.3 安装LangChain依赖包 四、百度千帆大模型对接 LangChain 4.1 LL…...
Vue3(一)
1.Vue3概述 Vue3的API由Vue2的选项式API改为了组合式API。但是,也是Vue2中的选项式API也是兼容的。 2.创建Vue3项目 create-vue 是 Vue 官方新的脚手架工具,底层切换到了 vite。使用create-vue创建项目的步骤如下: 安装 create-vue npm i…...
php命名空间
什么是命名空间 从广义上来说,命名空间是一种封装事物的方法,在很多地方都可以见到这种抽象概念。 例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。 具体举个例子…...
AI也会犯错
一、缘起 1.1 问题的发现 AI模型在处理数值比较问题时,出现了一个有趣的现象:当被问到“9.9”和“9.11”哪个更大时,一些AI模型给出了错误的答案,认为“9.9”大于“9.11”。这一问题最初是由 Riley Goodside 发现的,…...
Android NDK开发入门2之适应idm环境
环境搭建 Android NDK开发实战之环境搭建篇(so库,Gemini ai)-CSDN博客 初始配置 前面已经运行了一个简单的初始程序,现在我们来往初始程序添加类和函数,并成功运行的实验。 一级配置 第一层配置主要是cmake文件环境和一些编译选项。 build配置 可参…...