[英]Run docker in ubuntu live disk
我想知道是否可以在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或设备。
我正在使用的实时磁盘的内核是:
$ uname -r
3.13.0-32-generic
如果 Ubuntu 实时磁盘不是运行 Docker 的最佳实时磁盘,是否还有其他具有一些 GUI 的替代方案,而不仅仅是运行 docker 的简单终端?
我这么说是因为我想把 Docker 介绍给我的父母,但他们不想在他们的电脑上安装 linux,所以我需要一些简单的图形界面来写下 Dockerfile,打开浏览器等...
更新
我看到在安装过程中,在设置 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,但如果是这样,那么是否可以更新 livedisk 中的内核(保留它?)?
我设法通过将 Docker 存储更改为devicemapper而不是AUFS来完成这项工作。
您只需要更改/etc/default/docker
即可在其中包含此内容:
DOCKER_OPTS="--storage-driver=devicemapper"
请参阅此答案并在--storage-driver=devicemapper
start 命令的末尾添加--storage-driver=devicemapper
。
我已经设法使容器运行正常,但我更喜欢使用 AUFS。
我意识到默认情况下分区没有使用 aufs,而是像caw
或cow
类的东西(现在不记得了)。
我还尝试使用 AUFS 在 grub 中使用union=aufs
标志使其工作,但是在运行 docker 守护程序时,我得到一个FATA[0000] Shutting down daemon due to errors: error intializing graphdriver: backing file system is unsupported for this graph driver
,看起来与https://github.com/docker/docker/issues/7321有关
我将在这里留下我的答案,因为它是解决这个问题的一种方法,但如果有人设法使用 AUFS 使这项工作成功,在我看来,这将是一个更好的答案。
您想告诉 Docker 守护程序将与您的容器相关的数据存储在持久存储上。
默认情况下,docker 守护进程将这些数据放入/var/lib/docker
。 您可以使用--graph
daemon 选项更改该位置
我在 Debian Live 系统上遇到了类似的问题。 对于最新的 docker,更改/etc/default/docker
不会进行任何更改。
将--storage-driver=vfs
附加到/lib/systemd/system/docker.service
对我有帮助:
...
ExecStart=/usr/bin/dockerd --storage-driver=vfs -H fd://
...
( vfs
可能性能不佳,但aufs
、 overlay2
和devicemapper
对我来说不能正常工作。)
以下在 Ubuntu 14.04 中不起作用,但在20.04 、 18.04和16.04 中有效。
如果您尚未安装 Docker,请启动终端并粘贴以下命令。
# docker.io is in the "universe" repository, so add it.
sudo add-apt-repository universe
# Only necessary in 16.04, but doesn't hurt anything.
sudo apt-get update
# Install Ubuntu's Docker package
sudo apt-get install -y docker.io
这里我们使用/etc/docker/daemon.json
配置文件来更改存储驱动。
在终端中粘贴以下命令:
# Create a config file to set the storage driver to "Device Mapper"
echo '{ "storage-driver": "devicemapper" }' | sudo tee -a /etc/docker/daemon.json > /dev/null
# Restart the Docker service
sudo service docker restart
现在我可以使用命令成功运行一个 Ubuntu 容器
sudo docker run --rm -it ubuntu
不幸的是,我不确定这种方法将支持多长时间。 运行sudo docker info
我看到以下弃用警告:
WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future
release.
我有类似的问题,但使用 Ubuntu 16.04。 我实际上做了什么让它运行
1)我在ubuntu live上安装了docker
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
software-properties-common
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2) 在 ubuntu live 上安装 docker 后。 您需要停止使用 docker
sudo service docker stop
3) 然后使用编辑 /lib/systemd/system/docker.service 上的文件
sudo gedit /lib/systemd/system/docker.service
通过替换这一行
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd /containerd.sock
用这条线
ExecStart=/usr/bin/dockerd -g /media/ubuntu/something -H fd:// --containerd=/run/containerd /containerd.sock
所以基本上我们所做的就是添加-g /media/ubuntu/something,这个驱动会替换docker的ROOT DIR。 请注意,如果驱动程序是 NTFS,这将不起作用。 您需要将驱动程序设为 ext4 或 FAT。
4) 完成后,重新加载守护进程
sudo systemctl daemon-reload
5)重启docker服务
sudo service docker restart
6)通过运行检查ROOT DIR是否已更改
sudo docker info
您应该会在那里看到新目录。 毕竟,这非常酷,因为您可以拥有可移植的图像和容器,并且只需执行上述操作就可以在任何 ubuntu 机器上运行它们。 我没有在 Windows 上测试过这个,但无论如何,使用 docker 和 windows 对我来说总是很痛苦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.