当前位置: 首页>>技术教程>>正文


在ubuntu live disk中运行docker

, ,

问题描述

我想知道是否可以在Ubuntu 14.04 USB Live-Disk中安装和运行Docker。

我正在尝试使用8GB USB,4 GB用于安装,4 GB用于持久存储,但是在运行容器时我一直遇到错误(拉动它们没问题)。

这是我的Docker版本:

$ sudo docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64

我在运行docker容器时遇到的当前错误是:

[8] System error: mountpoint for cpu not found 

OBS:有时错误是cpuset或找不到设备。

我正在使用的live-disk的内核是:

$ uname -r
3.13.0-32-generic

如果Ubuntu实时磁盘不是运行Docker的最佳live-disk,那么还有其他任何具有GUI功能的GUI,而不仅仅是一个运行docker的简单终端吗?

我这样说是因为我想把Docker介绍给我的父母,但是他们不想在他们的PC上安装linux,所以我需要一些简单的图形界面来记下Dockerfile,打开浏览器等等…


UPDATE

我在安装过程中看到设置cgroup-lite依赖项initctl: Unknown job: cgroup-lite时出错。另外我读到一些ubuntu需要安装apparmor才能使docker安装正常工作。

所以我安装了它并重新安装了docker(cgroup-lite安装没有问题),现在我在运行sudo docker -d时得到这个

INFO[0000] +job serveapi(unix:///var/run/docker.sock)   
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) 
INFO[0000] +job init_networkdriver()                    
INFO[0000] -job init_networkdriver() = OK (0)           
WARN[0004] Your kernel does not support cgroup swap limit. 
INFO[0004] Loading containers: start.                   
......
INFO[0004] Loading containers: done.                    
INFO[0004] docker daemon: 1.6.2 7c8fca2; execdriver: native-0.2; graphdriver: aufs 
INFO[0004] +job acceptconnections()                     
INFO[0004] -job acceptconnections() = OK (0)            
INFO[0004] Daemon has completed initialization 

当我试图运行一个容器时,我会收到>

ERRO[0125] HTTP Error: statusCode=500 Cannot start container 90875e79dec37cec41a67aac235b81f0fc17c4e011cd6e5368a4b29336587f5b: 
[8] System error: permission denied

不确定内核不支持cgroup,但如果是这样,那么是否可以更新liveisk中的内核(持久化?)?

最佳解决办法

我已经设法通过将Docker存储更改为devicemapper而不是AUFS来完成这项工作。

基本上只需更改/etc/default/docker就可以了:

DOCKER_OPTS="--storage-driver=devicemapper"

我已经设法使容器运行正常,但我更喜欢使用AUFS。

我意识到默认情况下分区没有使用aufs,但是像cawcow(现在不记得了)。

我还尝试使用grub中的union=aufs标志使用AUFS,但是当运行docker守护进程时,我得到一个看起来与https://github.com/docker/docker/issues/7321相关的FATA[0000] Shutting down daemon due to errors: error intializing graphdriver: backing file system is unsupported for this graph driver

我会在这里留下我的答案,因为这是解决这个问题的方法,但是如果有人设法使用AUFS来完成这项工作,那么在我看来,这将是一个更好的答案。

次佳解决办法

您想告诉Docker守护程序将与容器相关的数据存储在持久存储上。

默认情况下,docker守护程序将这些数据放入/var/lib/docker。您可以使用--graph docker守护程序选项更改该位置

第三种解决办法

我在Debian Live系统上遇到了类似的问题。对于最新的泊坞窗,更改/etc/default/docker没有任何更改。

--storage-driver=vfs附加到/lib/systemd/system/docker.service对我有帮助:

...
ExecStart=/usr/bin/dockerd --storage-driver=vfs -H fd://
...

(vfs性能可能不佳,但aufsoverlay2devicemapper对我来说效果不佳。)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6799.html,未经允许,请勿转载。