Запустите докер в живом диске ubuntu
Мне было интересно, можно ли установить и запустить Docker в Ubuntu 14.04 USB Live-Disk.
Я пытаюсь с помощью 8 ГБ USB, 4 ГБ для установки и 4 ГБ для сохраняемого хранилища, но я продолжаю получать ошибки при запуске контейнеров (нет проблем при их вытягивании).
Вот моя версия 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
И текущая ошибка, которую я получаю при запуске контейнера докеров:
[8] System error: mountpoint for cpu not found
OBS: Иногда ошибка заключается в том, что cpuset или что устройства не найдены.
Ядро live-диска, которое я использую:
$ uname -r
3.13.0-32-generic
Если живой диск Ubuntu не лучший live-диск для запуска Docker, существуют ли любые другие альтернативы, у которых есть какой-то графический интерфейс с ним, а не просто простой терминал для запуска docker?
Я говорю об этом, потому что я пытаюсь представить Docker своим родителям, но они не хотят устанавливать Linux на своих ПК, поэтому мне нужен простой графический интерфейс для записи файла Docker, браузер и т.д.
UPDATE
Я видел, что во время установки возникла ошибка при настройке зависимости cgroup-lite initctl: Unknown job: cgroup-lite
. Также я прочитал, что некоторым ubuntu нужно установить apparmor, чтобы установка докера работала правильно.
Итак, я установил его и переустановил 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 (сохраняя его?)?
Ответы
Ответ 1
Мне удалось выполнить эту работу, изменив хранилище Docker на devicemapper вместо AUFS.
В основном просто нужно было изменить /etc/default/docker
, чтобы иметь это в нем:
DOCKER_OPTS="--storage-driver=devicemapper"
Мне удалось сделать контейнеры в порядке с этим, но я предпочитаю использовать AUFS.
Я понял, что раздел по умолчанию не использует aufs, но что-то вроде caw
или cow
(теперь не помню).
Я также попытался заставить его работать с использованием AUFS, используя флаг union=aufs
в grub, но при запуске демона докеров я получаю a 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, это, на мой взгляд, лучший ответ.
Ответ 2
Вы хотите, чтобы демон Docker сохранял данные, относящиеся к вашим контейнерам, в постоянном хранилище.
По умолчанию демон docker помещает эти данные в /var/lib/docker
. Вы можете изменить это местоположение с помощью --graph
демона докера --graph
Ответ 3
У меня была похожая проблема в системе 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
не работали должным образом.)
Ответ 4
У меня были похожие проблемы, но с Ubuntu 16.04. Что я на самом деле сделал, чтобы заставить его работать
1) Я установил докер на Ubuntu Live
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) После установки Docker на Ubuntu Live. Вам нужно остановить докер с помощью
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/что-то, что является драйвером, который заменит ROOT DIR docker. Обратите внимание, что если драйвер NTFS, это не будет работать. Вам нужно иметь драйвер как ext4 или FAT.
4) После завершения перезагрузите демон
sudo systemctl daemon-reload
5) перезапустите сервис докера
sudo service docker restart
6) проверьте, что ROOT DIR изменился, запустив
sudo docker info
Вы должны увидеть новый каталог там. В конце концов, это очень круто, так как вы можете иметь переносимые образы и контейнеры и запускать их на любом компьютере с Ubuntu, просто выполнив вышеупомянутые действия. Я не проверял это на Windows, но в любом случае мне всегда было больно работать с докером и окнами.