lxc-create挂起,最后失败

我试图在linux容器上放置一些juju魅力,容器无法启动。 为了调试这个问题,我把它发生在发生这种情况的节点上,并尝试手动创建一个LXC容器

ubuntu@slot13:~$ sudo lxc-create -t ubuntu -n pavan Checking cache download in /var/cache/lxc/trusty/rootfs-amd64 ... Installing packages in template: ssh,vim,language-pack-en Downloading ubuntu trusty minimal ... I: Retrieving Release 

它根本没有取得任何进展。 它在这里停留了很长时间。 经过很长一段时间后,它说,

 ERROR: Unable to fetch GPG key from keyserver 

并继续挂起。 终于在20-30分钟后,它放弃了

 E: Failed getting release file http://archive.ubuntu.com/ubuntu/dists/trusty/Release 

lxc-create命令对应的日志文件在哪里? 我该如何调试此问题?

编辑 :我想出了如何查看调试日志,因此运行了以下命令几次

 sudo lxc-create -t ubuntu -n pavan --logfile=test.txt --logpriority=DEBUG 

test.txt仅包含此内容

 lxc-create 1414897265.204 ERROR lxc_container - Error: pavan creation was not completed lxc-create 1414897407.757 ERROR lxc_container - Error: pavan creation was not completed lxc-create 1414897407.759 WARN lxc_log - lxc_log_init called with log already initialized 

但它仍然挂起,调试日志没有提供太多帮助。

你是代理人吗? 如果是,那么您可以在bash中设置您的代理。 问题如下,

 export http_proxy="http://:" 

请附加–no-validate标志以跳过gpgvalidation。 请参阅https://github.com/lxc/lxc/blob/master/templates/lxc-download.in#L240

实际上juju使用’ubuntu-cloud’模板来获取图像,在我的运行信任的系统中执行创建模板的命令是:

 lxc-create -n juju-trusty-lxc-template \ -t ubuntu-cloud \ -f /var/lib/juju/containers/juju-trusty-lxc-template/lxc.conf \ -- --debug \ --userdata /var/lib/juju/containers/juju-trusty-lxc-template/cloud-init \ --hostid juju-trusty-lxc-template -r trusty 

我建议你运行类似的东西,看看有什么错误给你。

感谢Felipe的解决方法 – 要获得完整的修复,还需要执行以下操作:

 mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju 

细节:

  1. 按照Felipe的updateList项目运行lxc-create
  2. 部署任何服务一直都失败,juju状态显示:

     agent-state-info: 'container failed to start and was destroyed: jjo-local-machine-1' 
  3. 发现于/var/lib/juju/containers/jjo-local-machine-5/container.log:

     lxc-start 1427066682.951 ERROR lxc_conf - conf.c:mount_entry:1711 - No such file or directory - failed to mount '/var/log/juju-jjo-local' on '/usr/lib/x86_64-linux-gnu/lxc/var/log/juju' 
  4. 创建目录修复它,进一步部署ok:

      mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju 

问题

如果您位于限制Internet访问的防火墙后面,则可能会出现此错误:

 $ lxc-create -t download -n my-container Setting up the GPG keyring ERROR: Unable to fetch GPG key from keyserver. lxc-create: lxccontainer.c: create_run_template: 1297 container creation template for my-container failed lxc-create: tools/lxc_create.c: main: 318 Error creating container my-container 

固定

通过端口80连接到密钥服务器:

 $ lxc-create -t download -n my-container \ -- --keyserver hkp://p80.pool.sks-keyservers.net:80 

细节

密钥服务器hkp://p80.pool.sks-keyservers.net:80来自lxc源代码:

 apt source lxc grep -ri hkp: . 

参考

  • Launchpad bug 1331920
  • Launchpad bug 1609479

我有同样的问题。 我们有一个带有错误的http / 1.0实现的代理服务器,使得gpg keyserver fetch出现问题。 作为解决方法,可以通过执行以下操作手动添加密钥:

到http://keyserver.ubuntu.com并搜索以下密钥:0xBAEFF88C22F6E216(在/ usr / share / lxc / templates / lxc-下载搜索DOWNLOAD_KEYID中找到)。 下载并将其保存到名为keyfile的文件中

现在可以将保存的文件添加到系统密钥环中,例如通过使用

 sudo apt-key add keyfile 

有更多的方法来添加它,但使用ubuntu这是一种工作方式。 也许你也可以直接使用gpg。 添加后,不再需要lxc来联系密钥服务器,问题就解决了。

根据这里的答案 ,我发现禁用IPV6应该有效。 它对我有用。

这个堆栈溢出答案显示了如何做到这一点。