1. podman -- 容器

 容器(LXC,Linux Container)

 

1. 为什么要使用容器

假设您在开发一个应用。

您使用的是一台笔记本电脑,且您的开发环境具有特定的配置,您正在开发的应用不止依赖于您当前的配置,还需要某些特定的库、依赖项和文件。

其他开发人员的环境配置可能稍有不同,与此同时,您的企业还拥有标准化的开发和生产环境,有着自己的配置和一系列支持文件。

您希望尽可能多在本地模拟这些环境,而 不是花费精力来重新创建环境

要如何确保应用能够在这些环境中运行,答案就是使用容器。

 

容器可以确保您的应用拥有必需的库、依赖项和文件,

(可以将自己的开发环境、代码、配置、文件等一并打包到容器中,)

让您可以在生产中自如地迁移这些应用,无需担心会出现任何负面影响。

实际上,可以将容器的内容,视为 Linux 发行版的一个安装实例,(类比一个虚拟机)

因为其中完整包含 RPM 软件包、配置文件等内容。

但是,安装容器,要比安装新的操作系统副本容易得多。

 

比如,用 Python 开发网站后台后,

就可以将 Python3 及其依赖包、用到的 Flask 及其各种插件、Mysql、Nginx 等打包到一个容器中,

然后部署到任意你想部署到的环境,只要有容器运行的环境即可。

由此:

 

  • 可移植性(不依赖于语言、框架、系统)

 

容器是与系统其他部分隔离开 的一系列进程。

运行这些进程所需的所有文件都由另一个镜像提供,

这意味着将容器移动到其他的环境,

(如:ARM Linux 系统运行 ARM Linux 容器,x86 Linux 系统运行 x86 Linux 容器,x86 Windows 系统运行 x86 Windows 容器)

依旧能正常的运行。

Linux 容器具有极佳的可移植性,但前提是它们必须与底层系统兼容。


 

 

2. 容器和集装箱

container 的中文释义之一就是集装箱,

且在此,中文翻译为集装箱比翻译为容器会更加贴切。

如下图,就是 docker(容器技术的一种实现)的 logo

集装箱 将 一辆车 打包好,从  A 码头 运送到  B 码头,               到达目的地卸货后,车正常的开动。

容器 将 开发的程序和依赖环境 打包好,从 CentOS 7 移植到  Ubuntu 14,  移植后,程序正常的运行。

 

 


3. 容器和虚拟化

前面提到:
...将开发的东西、依赖关系打包到容器中...将容器镜像中的内容,视为 Linux 发行版的一个安装实例,

有点类似于虚拟机的样子,将这个 “虚拟机” 迁移到目标环境,

但容器和虚拟机还是不一样的。

虚拟化

  • 虚拟化是使得多个操作系统(Windows、Linux)可以在单一主机上运行

    (如上多个 guest OS 都是建立在 host operating system 上)

  • 虚拟化通过 Hypervisor 将硬件“拆分”(uses a hypervisor to emulate hardware)成多个虚拟硬件,允许多个操作系统并行运行

容器

  • 容器是直接运行于操作系统(分享硬件、操作系统资源),共享同一个内核

  • 作系统将容器与其他系统部分进行了隔离

  • 相比较,容器更加“轻量级”,占用资源更少


 

4. OCI

docker 是 Docker 公司与公司同名的容器技术,几乎是容器的代名词,

但除了 docker 外还有着其他的容器

由 Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的 OCI(Open Container Initiative)组织成立,推出了开放容器标准。

 

通过 3 个主要标准,来确保各种容器技术间的互操作性

  • Image
  • Distribution
  • Runtime 

 

 

 

 

 

posted @ 2021-10-31 10:44  牛顿撕鸡  阅读(301)  评论(0编辑  收藏  举报