lxc

【译】LXC and LXD: Explaining Linux Containers

别来无恙 提交于 2019-12-07 16:42:22
LXC和LXD是两个重要的缩略词,可以知道你是否装入容器。 不幸的是,它们也是难以直接相互保持的缩略语。 他们听起来很像。 它们指的是类似的平台,这些平台大部分是由同一家公司创建的。 而且他们在技术层面上彼此深深地交织在一起。 如果这听起来令人困惑,那是因为它至少在开始时是这样。 幸运的是,通过一些解释,很容易理解LXC,LXD以及它们对于想要使用容器的管理员和开发人员的意义。 这篇文章解释了LXC和LXD是什么,它们之间有什么不同,以及为什么开发人员或管理员想要使用它们 - 或者,为什么他们可能更喜欢坚持使用Docker或CoreO。 LXC 要了解LXD,您首先必须了解LXC。 LXC是“Linux容器”的简称,是Linux内核中操作系统级软件虚拟化的解决方案。 与传统的虚拟机管理程序(想想VMware,KVM和Hyper-V)不同,LXC允许您在虚拟环境中运行单个应用程序,但如果您愿意,也可以在LXC容器内虚拟化整个操作系统。 LXC的主要优势包括使用来自主机操作系统的用户空间工具轻松控制虚拟环境,比传统虚拟机管理程序需要更少的开销,并通过将其分发到容器内来提高单个应用程序的可移植性。 如果您认为LXC听起来很像Docker或CoreOS容器,那是因为LXC曾经是使Docker和CoreOS打勾的底层技术。 然而,最近,Docker走向了自己的方向,不再依赖于LXC。

Docker(三)容器管理工具

蹲街弑〆低调 提交于 2019-12-07 16:41:42
文章目录 容器管理工具: LXC docker: pouch: Docker 的优势: Docker 的缺点: 容器管理工具: 目前主要是使用 docker, 早期有使用 lxc。 LXC LXC : LXC 为 Linux Container 的简写。可以提供轻量级的虚拟化,以便隔离进程和资源, 官方网站: https://linuxcontainers.org/ Ubuntu 安装 lxc: # apt install lxc lxd Reading package lists .. . Done Building dependency tree Reading state information .. . Done lxd is already the newest version ( 3.0.3-0ubuntu1~18.04.3 ) . lxc is already the newest version ( 3.0.3-0ubuntu1~18.04.1 ) . 检查内核对 lcx 的支持状况,必须全部为 lcx # lxc-checkconfig # lxc-create -t 模板名称 -n lcx-test # lxc-create -t download --name alpine12 -- --dist alpine --release 3.9 --arch

Ubuntu创建LXD系统容器

扶醉桌前 提交于 2019-12-07 16:41:23
基于Ubuntu 16.04.5 LTS系统,首先安装lxd。 # sudo apt-get install lxd 将当前用加入到lxd用户组中: # newgrp lxd 使用lxc list可查看当前系统的容器列表,目前还没有创建任何容器,列表为空。 # sudo lxc list +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+ 在创建容器之前,需要先执行lxd init初始化全局配置。以下可见,lxd创建了一个名为lxdbr0的网桥,用户容器与宿主机通信,网桥IPv4地址设置为10.254.178.1,如果此地址与网络中其它子网地址相同,需要进行修正。另外依据lxd init提示创建了容器的IPv4网段(10.254.178.20 - 10.254.178.254)。IPv6网段暂不设置。 # sudo lxd init ... Would you like to create a new network bridge (yes/no) [default=yes]? What should the new bridge be

docker lxc cgroup namespace简述

余生长醉 提交于 2019-12-07 16:39:38
docker、lxc、cgroup、namespace是最近比较的技术。先了解一下他们分别是什么,然后说一下他们怎么用,具体实现机制以后再单独研究。 docker是lxc的管理器,lxc是cgroup的管理工具,cgroup是namespace的用户空间的管理接口。namespace是linux内核在task_struct中对进程组管理的基础机制。 再详细点说: docker是用go来实现的,自动化了对lxc的管理过程,能够自动在线下载相应的发行版本的rootfs。 lxc可以直接chroot到任意的系统的rootfs上并通过cgroup的限制机制来控制容器内系统的资源占有率。 cgroup通过配置文件或者命令配置后,限制相应进程或一组进程使用的系统资源。 很明显,在lxc以上已经借助于chroot机制在一个限制的容器中运行一个完整的系统了,这样多个不通过虚拟化技术的新系统就在特定的占有物理资源的限制上运行起来。据说运行效率直逼实际机器。 下面说一下用法吧,先从下往上说: cgroup 步骤: 在文件系统上建立层次结构 挂载文件系统并关联子系统 建立控制组 设置控制参数 将进程加入到控制组 通过/etc/cgconfig.conf配置或者cgroup-bin的相关指令来配置: mount { cpuset = /sys/fs/cgroup/cpuset; momory = /sys

我眼中的 Docker(一)docker、vm、lxc

百般思念 提交于 2019-12-07 16:37:40
前言 docker 是什么?docker 能干什么?docker 为什么这么火?相信不少人都有这个疑问。我也有。觉得 docker 涉及到的技术太多了,从 linux 内核到各种云计算的解决方案,对于我来说实在是有点艰难的。然而学了一个月的 docker 相关的东东,还是想简单谈谈,说一下我的理解,希望对 docker 的初学者有所帮助。 Docker 的历史 当我们在谈论一项技术的时候,经常会追溯它的历史,这可以帮助我们更好地理解它是怎么发展起来的,是为了解决什么问题。 docker 起源于国外一家很酷的公司 dotclound, 2013 年在 Github 上开源并推进,项目吸引了世界范围内大量的目光,社区非常活跃,许多巨头也参与进来,而 dotclound 直接就把自己改名为 docker 了…. 关于 docker 的开源发展可以详细看这篇: Docker开源之路 Docker 是什么 那么,docker 究竟是什么?docker 是一个基于LXC 的高级容器引擎。听起来是不是不知道在说什么?简单地说,docker 是一个轻量级的虚拟解决方案,或者说 —— 一个超轻量级的虚拟机。你一定理解虚拟机是什么,那么,你现在可以认为 docker 是一个秒级启动的虚拟机,可以轻易创建和删除,就这一点,是不是酷毙了。 我们会经常看到这个 docker 的图,它告诉我们,docker

LXC、LXD、Docker的区别与联系

☆樱花仙子☆ 提交于 2019-12-07 16:37:21
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔离,linux namespace包括:mount namespace, uts namespace, ipc namespace, pid namespace, network namespace, user namespace六种,用于将mount点、UTS(hostname, domain name)、IPC资源、进程、网络、用户等六种资源做到进程级别的隔离。容器作为一个普通的进程,使用namespace技术作隔离。 pivot_root根文件系统切换。mount –bind /etc /tmp/test/etc方式允许从任何其他位置访问任何文件或目录,但是其他用户仍然能看到这些mount点,而mount namespace可以做到mount点在各个进程之间隔离。尽管如此,目前没有对文件/目录做进程间隔离的namespace,所以有必要制作根文件系统再采用pivot_root命令在容器内替换为这个根文件系统(注:chroot只是在指定的根文件系统下运行命令)。 cgroups技术用来做资源限制,这些资源包括CPU、内存、存储、网络等。

LXC、LXD、Docker的区别与联系(by quqi99)

空扰寡人 提交于 2019-12-07 16:36:45
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔离,linux namespace包括:mount namespace, uts namespace, ipc namespace, pid namespace, network namespace, user namespace六种,用于将mount点、UTS(hostname, domain name)、IPC资源、进程、网络、用户等六种资源做到进程级别的隔离。容器作为一个普通的进程,使用namespace技术作隔离。 pivot_root根文件系统切换。mount –bind /etc /tmp/test/etc方式允许从任何其他位置访问任何文件或目录,但是其他用户仍然能看到这些mount点,而mount namespace可以做到mount点在各个进程之间隔离。尽管如此,目前没有对文件/目录做进程间隔离的namespace,所以有必要制作根文件系统再采用pivot_root命令在容器内替换为这个根文件系统(注:chroot只是在指定的根文件系统下运行命令)。 cgroups技术用来做资源限制,这些资源包括CPU、内存、存储、网络等。

Starting Xserver in Docker Ubuntu container

北慕城南 提交于 2019-12-07 11:33:34
问题 I have minimal Ubuntu installation in my container and I want to have Xserver running. I need XServer, because my app requires meshlabserver, which itself needs Xserver. I installed xserver-xorg and all other packages, but when I try to start X in container via /usr/bin/X :0 it says: Fatal server error: (EE) xf86OpenConsole: Cannot open /dev/tty0 (No such file or directory) What am I doing wrong? How do I start X server? UPDATE: related question: Host screen turns off when I start X server in

Where are core files stored in a lxc container?

落爺英雄遲暮 提交于 2019-12-07 06:58:46
问题 When I am running code on a container it cores I am not able to locate it on my container(or the core file is not being stored). ulimit -c is set to unlimited /proc/sys/kernel/core_pattern is set to |/usr/share/apport/apport %p %s %c %P (what is the meaning of | ?) Do I need to make any changes in/to the host system? 回答1: | indicates that a program should handle the core dump. Rather than saving the coredump to a file it will be piped into that programs input. Means if core_pattern is set to

Exec is not supported by the lxc driver: how to get around this?

女生的网名这么多〃 提交于 2019-12-07 04:10:36
问题 Using Docker on CoreOS, I have a script which calls: docker exec ... This works fine on CoreOS, but I also want to test it on CircleCI. When I try to run that script on CircleCI, I get: time="2015-06-22T01:14:51Z" level=fatal msg="Error response from daemon: Unsupported: Exec is not supported by the lxc driver" ./tests/run.sh returned exit code 1 Here are the test results on CircleCI. I tried changing docker exec to docker --exec-driver native exec , however I am not entirely sure what a