3

有没有办法在 Docker 中运行 LXD?例如。

在使用 ubuntu 16.04 的主机上:

docker run --rm -it --net host --privileged ubuntu bash

在容器中:

apt update && apt install -y lxd iproute2 btrfs-tools screen bash-completion curl wget apt-transport-https lxcfs lxd-tools lxd-client vim overlayroot libkmod2 libkmod-dev cgroup-tools cgroupfs-mount cgroup-bin

screen -S lxd
# in screen
lxd --debug --group lxd


lxd init
lxc list
lxc launch ubuntu:16.04 test

LXD 守护进程工作,但由于 cgroups 错误,我无法启动 LXD 容器。

error: Error calling 'lxd forkstart test /var/lib/lxd/containers /var/log/lxd/test/lxc.conf': err='exit status 1'
  lxc 20170502151757.409 ERROR lxc_apparmor - lsm/apparmor.c:apparmor_process_label_set:220 - If you really want to start this container, set
  lxc 20170502151757.409 ERROR lxc_apparmor - lsm/apparmor.c:apparmor_process_label_set:221 - lxc.aa_allow_incomplete = 1
  lxc 20170502151757.409 ERROR lxc_apparmor - lsm/apparmor.c:apparmor_process_label_set:222 - in your container configuration file
  lxc 20170502151757.409 ERROR lxc_sync - sync.c:__sync_wait:57 - An error occurred in another process (expected sequence number 5)
  lxc 20170502151757.409 ERROR lxc_start - start.c:__lxc_start:1346 - Failed to spawn container "test".
  lxc 20170502151757.954 ERROR lxc_conf - conf.c:run_buffer:405 - Script exited with status 1.
  lxc 20170502151757.954 ERROR lxc_start - start.c:lxc_fini:546 - Failed to run lxc.hook.post-stop for container "test".

我也试过:

--cap-add=ALL
--volume /dev:/dev
--pid=host
--volume /sys/fs/cgroup:/sys/fs/cgroup
4

2 回答 2

4

可以在 docker 内部运行 lxc,所以也应该可以运行 lxd。错误提示需要添加该行

lxc.aa_allow_incomplete = 1

到您的容器配置。

我做了一个概念证明,展示了如何在 docker 容器中轻松运行 lxc 容器:https ://github.com/micw/docker-lxc-demo

于 2018-07-31T20:09:30.633 回答
-1

不。

LXD/LXC 提供全栈 Linux 环境。Docker 是一个引擎,它允许您包装应用程序和依赖项。

Docker 提供了一个受限制的环境,故意禁用与网络和存储持久性相关的某些操作系统功能。

您可以在 LXD/LXC 容器中运行 Docker(实际上 Docker 曾经使用 LXC 作为其底层技术 - 可能仍然如此),但您不会在 Docker 容器中运行 LXC 容器。

于 2017-07-07T14:11:13.550 回答