当前位置: 首页 > 知识库问答 >
问题:

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

丌官坚秉
2023-03-14

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

在使用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

共有2个答案

伊铭
2023-03-14

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

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

您可以在LXD/LXC容器中运行Docker(事实上,Docker过去使用LXC作为其基础技术——现在可能仍然如此),但您不会在Docker容器中运行LXC容器。

郗浩言
2023-03-14

在docker中运行lxc是可能的,因此也应该可以运行lxd。错误表示您需要添加该行

lxc.aa_allow_incomplete = 1

到您的容器配置。

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

 类似资料:
  • 问题内容: 我们正在开发S60版本,该平台具有不错的Python API。 但是,关于Android上的Python尚无任何官方资料,但是由于Jython存在,有没有办法让蛇和机器人一起工作? 问题答案: 一种方法是使用: 开源Python库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序。 可在和上运行。你可以在所有受支持的平台上运行相同的代码。

  • 我想知道是否有任何方法可以从Windows Docker映像启动容器。 这个想法是在我的Ubuntu上启动一个Windows容器,然后通过RDP连接到那个Windows机器。有可能?

  • 我们正在考虑从MySQL迁移到AWS Aurora。我们正在为开发人员运行vagrant,因此每个虚拟盒子都有自己的mysql实例。有没有办法在本地运行极光?如果不是,处理这种情况的最佳方法是什么?

  • 据我所知,在Google Cloud Run上部署容器有两种方式: 云运行完全管理:它由GCP独立管理,无需我们创建集群 云运行for Anthos:这需要我们创建一个支持云运行的GKE集群 我想选择第二个选项,但希望将GKE集群保持为私有,这样就不允许任何外部通信。

  • 问题内容: 在Java中,是否有一种方法(在运行时)获取定义了特定类的字节码? 换句话说,有没有一种方法可以获取在加载特定类时传递给数组的数组?我看到已经声明了此方法,因此似乎无法创建一个自定义类来拦截类定义。 过去,我曾使用该类通过该方法获取字节码,但我希望使用更规范的解决方案。 问题答案: 这是如何实现代理的说明

  • 问题内容: 我正在使用Python中的subprocess.Popen启动许多子流程。我想检查一个这样的过程是否已经完成。我发现了两种检查子流程状态的方法,但似乎都可以迫使流程完成。一种是使用process.communicate()并打印返回代码,如解释在这里。另一种方法是简单地调用process.wait()并检查它是否返回0。 有没有一种方法可以检查进程是否仍在运行,而无需等待进程完成? 问