Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Docker内部运行LXD?_Docker_Lxd - Fatal编程技术网

有没有办法在Docker内部运行LXD?

有没有办法在Docker内部运行LXD?,docker,lxd,Docker,Lxd,有没有办法在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 v

有没有办法在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
否。

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

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


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

可以在Docker内运行LXC,因此也可以运行LXD。该错误表明您需要添加该行

lxc.aa_allow_incomplete = 1
到您的容器配置


我做了一个概念证明,展示了如何在docker容器中轻松运行lxc容器:

无可否认,我不知道,所以我写了一篇评论。我只是想知道,如果你用的是LXD,你为什么还要用Docker呢?您可能应该反转逻辑,在LXC内运行Docker。是的,我可以在LXD或LXC内运行Docker,而不会出现问题。这是一项普通的任务。但是想象一下,您有一个由几个节点组成的集群,其中包含轻量级操作系统和Docker。通过Docker运行应用程序或分布式文件系统(例如GlusterFS)很容易,甚至可以将KVM虚拟机作为Docker容器运行。Docker Swarm的一切都能正常工作。所以问题是:有没有办法在Docker内部运行LXD?也许它没用,但我知道它应该如何工作。这似乎是倒退。LXD是一个完整的Linux环境,Docker受到极大的限制。我希望问题是“我可以在LXD内部运行Docker吗”而不是“我可以在Docker内部运行LXD吗”。问这个问题让我问,你想做什么?为什么?答案是“不”,问题是“有没有办法在Docker内部运行LXD?”是错误的。这可能违背任何最佳做法,但这不是问题所在。