江西医院网站建设,成品网站免费下载,网站开发后端做那些,绵阳网站建设报价官方文档
什么是docker
Docker提供了在一个称为容器的松散隔离环境中打包和运行应用程序的能力。隔离和安全性允许您在给定的主机上同时运行多个容器。容器是轻量级的#xff0c;包含运行应用程序所需的一切#xff0c;因此您不需要依赖于主机上安装的内容。您可以在工作时…官方文档
什么是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
常用命令
docker run
docker exec
docker build配合compose的有
docker compose up/down //可选参数 -d,后台运行--build 重新构建