使用Docker容器不能忽略的10件事

利用 Watchtower 自动监听并更新正在运行的 Docker 容器 大部分 VPS 和 NAS 用户或多或少都有用 Docker 来部署一些 Self-hosting 的服务,其中大部分项目都是开源项目,更新频率非常高,特别是一些版本 0.x 的项目,及时的将 Docker 容器更新到最新版本不仅可以体验到新特性,还能减少 BUG。但是一旦部署的容器多起来,就不知道到底哪一个项目更新了,哪一个项目没有更新,即便是有类似 Portainer、Dockge 之类的可视化工具,更新 Docker 容器还是一件麻烦事。 阅读详情

背景

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。  当你真正投入容器Docker的怀抱,不但可以发现它能解决很多问题,而且还具有众多的优点:  第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的。您可以使用通过相同QA测试的镜像,使产品具有相同的表现。  第二:它是轻量级的 – 容器的内存占用非常小。不需要几百几千MB,它只要对主进程分配内存再加上几十MB。  第三:它很快速 – 启动一个容器与启动一个单进程一样快。不需要几分钟,您可以在几秒钟内启动一个全新的容器。  但是,许多用户依然像对待典型的虚拟机那样对待容器。但是他们都忘记了除了与虚拟机相似的部分,容器还有一个很大的优点:它是一次性的。  这个特性“本身”促使用户改变他们关于使用和管理容器的习惯;我将会向您解释在容器中不应该做这些事,以确保最大地发挥容器的作用。
1  不要在容器中存储数据 –  容器可能被停止,销毁,或替换。一个运行在容器中的程序版本1.0,应该很容易被1.1的版本替换且不影响或损失数据。有鉴于此,如果你需要存储数据,请存在卷中,并且注意如果两个容器在同一个卷上写数据会导致崩溃。确保你的应用被设计成在共享数据存储上写入。

2  不要将你的应用发布两份 –  一些人将容器视为虚拟机。他们中的大多数倾向于认为他们应该在现有的运行容器里发布自己的应用。在开发阶段这样是对的,此时你需要不断地部署与调试;但对于质量保证与生产中的一个连续部署的管道,你的应用本该成为镜像的一部分。记住:容器应该保持不变。

3  不要创建超大镜像 – 一个超大镜像只会难以分发。确保你仅有运行你应用/进程的必需的文件和库。不要安装不必要的包或在创建中运行更新(yum更新)。

4  不要使用单层镜像 – 要对分层文件系统有更合理的使用,始终为你的操作系统创建你自己的基础镜像层,另外一层为安全和用户定义,一层为库的安装,一层为配置,最后一层为应用。这将易于重建和管理一个镜像,也易于分发。

5  不要为运行中的容器创建镜像 – 换言之,不要使用“docker commit”命令来创建镜像。这种创建镜像的方法是不可重现的也不能版本化,应该彻底避免。始终使用Dockerfile或任何其他的可完全重现的S2I(源至镜像)方法。

6  不要只使用“最新”标签 – 最新标签就像Maven用户的“快照”。标签是被鼓励使用的,尤其是当你有一个分层的文件系统。你总不希望当你2个月之后创建镜像时,惊讶地发现你的应用无法运行,因为最顶的分层被非向后兼容的新版本替换,或者创建缓存中有一个错误的“最新”版本。在生产中部署容器时应避免使用最新。

7  不要在单一容器中运行超过一个进程 – 容器能完美地运行单个进程(http守护进程,应用服务器,数据库),但是如果你不止有一个进程,管理、获取日志、独立更新都会遇到麻烦。

8  不要在镜像中存储凭据。使用环境变量 –不要将镜像中的任何用户名/密码写死。使用环境变量来从容器外部获取此信息。

9  使用非root用户运行进程 – “docker容器默认以root运行。(…)随着docker的成熟,更多的安全默认选项变得可用。现如今,请求root对于其他人是危险的,可能无法在所有环境中可用。你的镜像应该使用USER指令来指令容器的一个非root用户来运行。”
​
10  不要依赖IP地址 – 每个容器都有自己的内部IP地址,如果你启动并停止它地址可能会变化。如果你的应用或微服务需要与其他容器通讯,使用任何命名与(或者)环境变量来从一个容器传递合适信息到另一个。

Win10中使用docker安装oracle随笔 刚开始使用的Oracle的时候,是公司提供的win10安装包,版本是11gr2。使用一年后,会变的卡顿,而且安装目大小也比较大,重新安装还让人望而却步(这才是让人头疼的地方)。所以才有了使用docker进行安装的想法,再加上开发中需要的其他软件——如redis等——也可以考虑使用docker进行安装,关键是简单,就算有问题,重新安装也方便,只是一句命令的事情。 阅读详情

相关推荐

让容器自动创建和销毁:编程实现

需要注意的是,上述示例代码仅仅是一个起点,你可以根据自己的需求和具体的应用场景进行更多的定制和扩展。此外,还可以使用编排工具(如Docker Compose或Kubernetes)来管理多个容器的创建和销毁,以实现更复杂的应用部署和管理。容器化技术允许开发人员将应用程序及其依赖项打包到独立的、可移植的容器中,从而实现快速部署、扩展和管理的优势。总结起来,通过使用编程语言和容器管理工具,我们可以轻松实现容器的自动创建和销毁。函数创建一个容器,并打印容器的ID。函数销毁先前创建的容器,并再次打印容器的ID。

TechGlide的博客 204

【Docker】使用Shell脚本实现Docker容器到期自动销毁并重新创建相同端口容器进程

【代码】【Docker】使用Shell脚本实现Docker容器到期自动销毁并重新创建相同端口容器进程。

shroudiwnl的博客 577

STM32驱动WS2812B实现音乐频谱可视化系统

本文详细介绍了基于STM32驱动WS2812B灯带实现音乐频谱可视化系统的设计与实现。通过FFT算法实时分析音频信号,将频谱映射到炫彩灯光控制系统,结合PWM和DMA技术实现低延迟响应。系统支持多模式切换和动态亮度调节,适用于创意灯光秀和智能家居场景。

weixin_29171129的博客 303

docker的commit和容器数据卷

docker的commit和容器数据卷 容器数据卷 容器的持久化和同步操作!容器之间也是可以共享 测试文件之间的同步 关闭容器再测试 1、停止容器 2、宿主机上修改文件 3、启动容器 4、观察容器内的数据是否同步.........

wkf_java的博客 1045

使用CAPL实现DoIP刷写

本文介绍了使用CAPL实现基于DoIP协议的ECU刷写方法,包含完整源码。

qq_56033302的博客 2762

【FPGA】Verilog代码实现温湿度传感器DHT11

#今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能。 先来讲个简单的模块,温湿度传感器DHT11。 DHT11介绍 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传...

Ninquelote的博客 9163

【Redis Docker容器安全性防护,防止入侵】

■ 需求背景 为团队构建测试环境缓存 ■ 实现步骤 Step. Docker Hub上找镜像: Step. Docker Hub上拉指定版本镜像: Step. 查看镜像: Step. 新建配置文件: Step. 创建脚本并运行 Step. 测试连接: Step. 测试监控:,键入 Step. 查看宿主机数据目录:,发现挂载成功Step.查看redis数据 + log + pid文件存储的默认目录dir:,结果若不是 /data,则设置一下: 备注 1)可以设置redis密码:,下次连接redis客户端,需经

诗和远方,代码和你 1849

零基础学GPU KMD--8. 内存管理:GPU 显存与系统内存的协同​8.1 显存分配策略:GEM / TTM 原理

支持 VRAM、GTT(Graphics Translation Table)、SYSTEM 内存的动态迁移与缓存管理。:若缓冲区在 SYSTEM,TTM 分配 GTT 条目并建立页表映射,使 GPU 可直接访问。:系统内存中预留给 GPU 直接访问的区域,通过 GPU 的 MMU 做地址翻译。你需要我继续展开这一部分吗?​ 为复杂离散 GPU 设计,应对大容量 VRAM、多内存域、显存迁移等问题。:重量级、功能全,适合大容量、多内存域的离散 GPU,强调显存迁移与统一管理。

amy_mhd的博客 187

现在都在说 Docker 好,那它有什么弊端吗?

对于大规模的分布式系统和开发小组来说,Docker 的优点可能远大于缺点,提升开发效率,降低运维成本。9. 映像构建复杂:构建 Docker 映像需要按照特定格式编写 Dockerfile 脚本,需要遵循一定的规范和流程,这可能需要更多的时间和精力。1. 安全问题:如果 Docker 没有正确配置,那么一个容器中的恶意代码可以轻易地影响到主机上的其他容器以及主机本身的安全。4. 网络问题:Docker 可能会在网络配置上存在一些问题,这可能需要更多的时间来诊断和解决。

PHPcode123的博客 2665

时间序列分析(Time Series Analysis) 原理与代码实例讲解

时间序列分析(Time Series Analysis) - 原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:时间序列预测,ARIMA模型,状态空间模型,SARIMA模型,机器学习

AI天才研究院 1248

OpenHarmony RK3568 从 32 位切换到 64 位用户空间指南

修改了编译参数(如修复 Q5 后),但 ThinLTO 缓存中保留了旧参数编译的 bitcode。这是一种节省内存的设计(32 位指针占 4 字节 vs 64 位占 8 字节),但在某些场景下需要切换为纯 64 位。切换到 64 位用户空间后,CPU 全程运行在 AArch64 状态,不再需要 AArch32 兼容模式。内核本身已经是 64 位(aarch64),切换用户空间位数不影响内核。(32 位兼容层)在纯 64 位系统中不再需要,可以关闭以减小内核体积。这两个参数对 64 位编译毫无意义,配合。

程小二的博客 690

linux中的docker状态为红色,Linux中使用Docker容器 不能忽略的10件事!

原标题:Linux中使用Docker容器 不能忽略的10件事! Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。当你真正投入容器Docker的怀抱,不但可以发现它能解决很多问题,而且还具有众多的优点:第一:它是不可变的– 操作系统,库版本,配置,文件夹和应用都是一样的。您可以使用通过相同Q...

weixin_36314050的博客 1278

UNet 改进(45):轻松集成Triplet Attention,让分割效果起飞!

本文介绍了一种在U-Net架构中集成CSRA残差注意力模块的方法。该模块通过结合通道注意力和空间注意力机制,在U-Net的瓶颈层对特征进行自适应重标定,使网络聚焦于关键区域。文章详细解析了代码实现,包括基础构建块DoubleConv、核心CSRA模块原理及其在U-Net中的战略位置集成。测试表明该模型能保持标准U-Net的输入输出维度,同时通过注意力机制提升特征选择能力。这种模块化设计便于在不同任务中应用,为图像分割领域提供了有效的注意力增强方案。

2401_82355416的博客 104

揭秘Docker容器停机卡顿:SIGTERM信号为何被忽略?

解决Docker容器停机卡顿难题,深入解析容器信号处理机制。聚焦SIGTERM信号被忽略的常见原因,涵盖进程PID 1问题、应用捕获逻辑及优雅终止方案。掌握正确处理方式,提升服务稳定性与部署效率,值得收藏。

QuickCode的博客 877

《无线传感网络 matlab》:从入门到实践

这就是如何使用Matlab建立一个简单的无线传感网络并进行仿真的方法。当然,这只是一个入门级的示例,真正的无线传感网络可能会更加复杂和庞大。首先,我们需要创建一个无线传感网络的基础结构。接下来,我们需要定义一个数据包的格式,以便节点之间可以交换信息。无线传感网络是一种由无线传感器节点组成的、自组织的网络。现在,我们可以开始编写节点代码了。我们将使用Matlab提供的工具箱来构建一个简单的无线传感网络,并对其进行仿真和分析。现在,我们可以将这个节点复制9次,以创建一个包含10个节点的无线传感网络。

NoerrorCode的博客 297

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows 10 下部署 Docker 并运行 Ubuntu 容器

该命令会从 Docker Hub 下载最新的 Ubuntu 镜像到本地。下载过程可能需要一些时间,具体取决于网络速度。通过以上步骤,你就可以在 Windows 10 下使用 Docker 运行 Ubuntu 容器了。运行该命令后,会进入 Ubuntu 容器的命令行界面,你可以在其中执行各种 Ubuntu 命令。如果安装成功,会显示 Docker 的版本信息。

a002wm的博客 1344

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Docker容器的重启策略

作者:【吴业亮】 博客:https://wuyeliang.blog.youkuaiyun.com/ 1. Docker容器的重启策略 Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。 Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。 Docker容器的重启策略如下: no,默认策略,在容器退出时不重启容器 on-failure,在容器非正...

本人任职于安超云技术架构部,拥有十余年云计算与AI经验。专注AI基础设施、分布式集群、高可用架构、虚拟化、存储、网络及数据库等领域。博客内容以学习笔记为主,力求准确,但个人能力所限,难免疏误。非常欢迎交流指正,期待与您共同探讨技术 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

docker停止信号java_Docker stop或者Docker kill为何不能停止容器

作者:marshalzxy原文:https://www.jianshu.com/p/813d8362d497背景我们内部压力(cpu 80%,内存90%)通过stress (做页面压力测试)在容器内部做测试中,发现某几个时候通过docker stop $containeriddocker cli退出后,短暂时间内docker ps查看到容器依然在运行状态。但是很快docker ps查看容器或者p...

weixin_29589063的博客 809

Docker 容器技术(史上最强总结)

一、容器介绍 1、概念 容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这其实是 PaaS 最理想的状态。 2、容器本质 容器的本质是进程,容器镜像就是这个系统里的".exe"安装包.**。 3、容器和虚拟机对比 ​ 容器是应用程序层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台计算机上运行,并与其他容器共享OS内核,每个

hanjinjuan的博客 9732

查看docker容器内存使用

主要的方法如下: 在宿主机上 1、使用docker stats 动态实时观看可以使用: docker stats 如果静态查看可以使用该命令: docker stats --no-stream d8ea9093d820 d8ea9093d820为容器id。 2、使用top命令 先执行 docker top 查出pid, docker top d8ea9093d820 网上有些教程使用ps -ef | grep 容器id去查 pid,这个方法是不准的。 通过对比可以看出,ps 出来的28

小生测试的博客 1万+

【Docker基础】Docker容器管理:docker stop详解

容器状态转换的核心命令包括docker create、docker start、docker stop、docker pause和docker rm等,其中,docker stop是最常用的容器管理命令之一,它实现了从运行状态到停止状态的优雅转换。docker stop命令将容器从运行状态(Running)转换为停止状态(Stopped),这是容器管理中最常见的操作之一,与docker kill不同,docker stop提供了优雅停止容器的机制。可指定任意信号(如SIGTERM)可配置(默认10秒)

IT成长日记的博客 2658

docker 容器简单使用

文章目录docker简介docker容器简单使用1、HelloWorld2、运行交互式的容器3、启动容器(后台模式) 安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装docker也可以使用 playwithdocker 提供的在线环境使用。链接:https://labs.play-with-docker.com/,不过对于免费版每天只要4小时使用时间。 docker简介 ...

专注于C/C++/Linux领域创作 393

使用Docker在windows10专业版上搭建Linux环境

关于使用Docker在windows10专业版上搭建Linux环境在Window10中使用Docker搭建Linux并配置环境一,什么是Docker二,Docker的应用场景三,Docker 的优点1、快速,一致地交付您的应用程序2、响应式部署和扩展3、在同一硬件上运行更多工作负载四, 安装Docker勾选Hyper-V下载Docker安装包Linux镜像下载以及相关软件的下载(vim、gcc,gdb)配置加速源查看Docker版本pull Ubnutu(其他镜像也可以pull,如需其它版本骑自行更改命令)

qq_46140800的博客 7282

【docker】Docker容器的重启策略

文章目录1. Docker容器的重启策略2. Docker容器的退出状态码不同操作,对应容器的状态 1. Docker容器的重启策略 Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。 Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。 Docker容器的重启策略如下: no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器 on-failure:3,指定启动的次数,在容器非正常退

m0_45406092的博客 2万+
上一篇: 不用root权限也能运行Docker——细数Docker 1.10的新功能
下一篇: Docker的优势
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值