常用工具之docker

官方文档

什么是docker

Docker提供了在一个称为容器的松散隔离环境中打包和运行应用程序的能力。隔离和安全性允许您在给定的主机上同时运行多个容器。容器是轻量级的,包含运行应用程序所需的一切,因此您不需要依赖于主机上安装的内容。您可以在工作时共享容器,并确保与您共享的每个人都获得以相同方式工作的相同容器。

Docker提供工具和平台来管理容器的生命周期:

1、使用容器开发应用程序及其支持组件。

2、容器成为分发和测试应用程序的单元。

3、准备好后,将应用程序部署到生产环境中,作为容器或编排好的服务。无论您的生产环境是本地数据中心、云提供商还是两者的混合,这都是一样的。

隔离和安全的实现

Docker的隔离机制是借助Linux 内核技术Namespace实现的,凭借着Linux Namespaces机制提供的一种资源隔离方案。PID,IPC,Network等系统资源不再仅仅作为全局性的,而是可以属于某个特定的Namespace(可以对应用户权限理解)。每个namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程。系统中可以同时存在两个进程号为0,1,2的进程,由于属于不同的namespace,所以它们之间并不冲突。而在用户层面上只能看到属于用户自己namespace下的资源,例如使用ps命令只能列出自己namespace下的进程。这样每个namespace看上去就像一个单独的Linux系统。

基于此,docker实现了一系列的分离:

The pid namespace:管理 PID namespace (PID: Process ID)

The net namespace: 管理网络namespace(NET: Networking)

The ipc namespace: 管理进程间通信命名空间(IPC: InterProcess Communication)

The mnt namespace:管理文件系统挂载点命名空间(MNT: Mount).

The uts namespace: Unix 时间系统隔离(UTS: Unix Timesharing

System).。

docker缓存

缓存是我们使用docker的一大便利,适当的使用缓存,可以提升构建效率。docker的缓存,分为两部分:一个是由上到下的,一旦未发生修改,在build时不会更新,另一个是docker提供的multi-stage选项。

由上到下的缓存

这个的好处自然不言而喻,确保了文档更新,缺点也是因为这点,微笑的改动也会导致更新。

multi-stage的缓存设置

真正的缓存可控,理论上可以永久缓存,build变为可选项。

可以通过写法,实现选择性的资源更新,非常好用!(当然,没忘的话)

docker的优缺点

优点(谁在夸我!)

1、轻量级,完全可以实现容器内只存在携带需要的内容,克服了传统虚拟机体积庞大的缺点。

2、操作简单,端口映射、文件共享的配置上,都相对虚拟机更为便捷。

缺点

隔离不彻底,

本质上,还是与宿主机共享内核。尽管可在容器里通过 Mount Namespace 单独挂载其他不同版本的os文件,比如 CentOS 或者 Ubuntu,但这并不能改变共享宿主机内核的事实!

所以不可能在Windows宿主机运行Linux容器或在低版本Linux宿主机运行高版本Linux容器。

而拥有硬件虚拟化技术和独立Guest OS的虚拟机,比如Microsoft的云计算平台Azure,就是运行于Windows服务器集群,但可在其上面创建各种Linux虚拟机

Linux内核很多资源无法被Namespace

最典型的比如时间。

若你的容器中的程序使用settimeofday(2)系统调用修改时间,整个宿主机的时间都会被随之修改,这并不符合用户预期。

而相比于在虚拟机里可自己随便折腾,在容器里部署应用时,"什么能做,什么不能做",用户都必须考虑(有兴趣的可见相关参考,感觉这篇写的还行)。

相关参考:https://cloud.tencent.com/developer/article/1790199

常用命令

shell 复制代码
docker run
docker exec
docker build

配合compose的有
docker compose up/down //可选参数  -d,后台运行,--build 重新构建
相关推荐
不能只会打代码8 分钟前
校享云 — 高校智慧后勤平台微服务架构设计与实践
spring cloud·docker·微服务·nacos·vue·校享云
Splashtop高性能远程控制软件38 分钟前
本地部署 vs 公有云 vs 混合架构:一份可对照落地的 IT 架构选型指南
运维·架构·远程控制·splashtop
kdxiaojie1 小时前
Linux 驱动研究 —— V4L2 (2)
linux·运维·笔记·学习
蝶恋舞者2 小时前
怎样设置软件开机自启动(用的最多,最简单)
linux·运维·服务器
段一凡-华北理工大学2 小时前
AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章23:从Demo到上线:Agent应用的架构设计、性能优化与成本控制实战
运维·网络·人工智能·性能优化·高炉炼铁·工业智能体
L1624762 小时前
Zabbix 7.0 LTS 完整部署与运维手册(AlmaLinux 9 + MySQL 8.0 + Nginx)
运维·mysql·zabbix
happymade2 小时前
MSRM3 区域层级嵌套功能深度解析与实操教程
运维·网络拓扑·网络管理·网络运维·msrm3
前端Baymax2 小时前
kube-proxy iptables模式下NodePort间歇性超时
docker·容器·kubernetes
一只积极向上的小咸鱼3 小时前
多机Docker + InfiniBand 分布式运行实操手册
分布式·docker·容器
java_logo3 小时前
Docker 部署 WPS 在线办公套件,浏览器即可编辑 Word、Excel、PPT
docker·word·wps·wps部署教程·wps免费版·轩辕镜像·docker部署教程