0
点赞
收藏
分享

微信扫一扫

lxc 与docker

泠之屋 2023-10-27 阅读 19

LXC 和 Docker 都是 Linux 上的容器技术,两者有以下主要区别:

  1. 设计目的不同
  • LXC 是一种操作系统层面的虚拟化技术,其设计初衷是创建和管理系统容器。
  • Docker 最初是为了打包应用打造的容器引擎,目的是将应用打包成标准化单元以便开发运维。
  1. 隔离程度不同
  • LXC 使用的资源隔离主要通过内核命名空间和控制组实现。
  • Docker 在 LXC 基础上又加入了 Union FS 文件系统以及自己的网络堆栈和进程管理等功能。 Docker 的隔离程度更高。
  1. 用户界面的不同
  • LXC 通过 lxc-* 命令行界面管理容器。
  • Docker 提供了 REST API 以及 docker 命令行界面。
  1. 镜像制作不同
  • LXC 需要手动配置和制作根文件系统。
  • Docker 使用分层镜像技术和镜像仓库实现自动化构建和分发镜像。
  1. 生态系统不同
  • LXC 生态较小,组件较少。
  • Docker 拥有大量软件、配置、驱动、工具等组成的强大生态系统。
  1. 使用对象不同
  • LXC 更底层,通常被云计算平台使用来提供容器服务。
  • Docker 面向开发者设计,更易使用。

总体来说,LXC 和 Docker 存在显著差异,前者更轻量化,后者提供了更完整的容器生命周期管理功能。两者可以共存使用


什么情况下更适合使用 LXC 而不是 Docker?

  1. 资源受限环境

LXC 的资源占用更少,可以在资源非常有限的环境中运行,比如内存只有几十 M 的旧设备。Docker 需要更多资源支撑其额外功能。

  1. 需要系统级隔离

LXC 通过内核命名空间提供强隔离,可以分割出完整的系统级容器。Docker 的系统隔离性稍弱。

  1. 需要裸机般性能

LXC 容器直接运行于主机内核,性能可以达到裸机级别。Docker 额外的存储驱动和网络栈可能带来一定性能损耗。

  1. 需要细粒度的资源控制

LXC 通过 CGroup 可以实现更细粒度的资源配额控制。

  1. 需要定制和集成主机级服务

LXC 可以方便地集成系统服务如 ssh,rsync 等到容器中。

  1. 需要直接访问和控制主机硬件

LXC 可以通过配置直接传入主机硬件访问权限给容器。

  1. 需要与主机系统深度集成

LXC 使用的命名空间和 CGroup 对主机层面集成更友好。

所以在一些对资源和性能要求极高,或者需要深度系统定制的场景中,LXC 比 Docker 更合适。



lxc launch images:almalinux/8 my-test-container -c limits.cpu=1 -c limits.memory=64MiB

正常情况下默认是8GB磁盘,CPU和内存看限制,有点虚拟机的味道,不过又不太一样,容器镜像是单独的块

lxc 与docker_LXC

lxc exec my-test-container -- bash

lxc 与docker_LXC_02

LXD/LXC 2.0 及以上版本使用镜像加速的方法:

lxc remote add mirror-images https://mirrors.tuna.tsinghua.edu.cn/lxc-images/ --protocol=simplestreams --public
lxc image list mirror-images:

lxc 与docker_Docker_03

lxc 与docker_LXC_04

sudo apt install doas debootstrap rsync gpg squashfs-tools golang-go
sudo go get -d -v github.com/lxc/distrobuilder
cd $HOME/go/src/github.com/lxc/distrobuilder
mkdir -p $HOME/ContainerImages/alpine/
cd $HOME/ContainerImages/alpine/

sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.9
lxc image import incus.tar.xz rootfs.squashfs --alias alpine3.9

lxc init alpine privesc -c security.privileged=true
lxc list #列举容器

lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true

如果要自己制作镜像:需要执行  lxd init #默认就行

PVE中用的LXC,好像是虚拟机一样,docker 的容器内看到的都是宿主机的资源信息

lxc 与docker_命名空间_05

lxc 与docker_Docker_06

lxc 与docker_Docker_07

举报

相关推荐

0 条评论