Я столкнулся с проблемой запуска docker snap на шлюзе Dell 5100 IoT Edge Gateway. У меня есть другой шлюз Dell - 3001 - который НЕ сталкивается с этой проблемой.
Вот шаги, которые я выполнил на шлюзе Dell 5100:
Установил Docker Snap, вот вывод 'snap list':
admin@localhost:~$ snap list
Name Version Rev Developer Notes
bluez 5.44-2 84 canonical -
core 16.04.1 394 canonical -
docker 17.03.1-ce-1 124 docker-inc -
modem-manager 1.6.2-5 82 canonical -
network-manager 1.2.2-10.2 166 canonical -
snapweb 0.26.1 207 canonical -
stlouis 16.04-1.13 11 canonical -
stlouis-kernel 4.4.0-77-1 19 canonical -
tpm2 1.0-4 18 canonical -
uefi-fw-tools 1.4.1-0.7.2+git 7 canonical -
После установки я выполнил команду, указанную в docker.help, чтобы включить нужные интерфейсы snap:
sudo snap connect docker:home :home
Вывод команды 'snap interfaces' после выполнения команды из #2 выше.
$ snap interfaces | grep docker
:docker-support docker:privileged,docker:support
:firewall-control docker
:home docker
:network docker,snapweb,tpm2,uefi-fw-tools
:network-bind docker,snapweb,tpm2
docker:docker-daemon docker:docker-cli
admin@localhost:~$
Затем я проверил состояние apparmor для docker с помощью следующей команды:
В отличие от того, что я вижу в выводе 3001 для той же команды, docker-default
отсутствует:
$ sudo aa-status | grep docker
snap.docker.compose
snap.docker.docker
snap.docker.dockerd
snap.docker.help
snap.docker.dockerd (1582)
snap.docker.dockerd (1627)
Вот ВЫХОДНЫЕ данные шлюза Dell 3001 для статуса apparmor и списка привязок:
Большая разница между 3001 и 5100 заключается в версии ОС - я новичок в Ubuntu Core и не могу понять, почему docker-default отсутствует в статусе apparmor. Я перезагружался, восстанавливал заводские установки и пробовал многое другое. Проблема проявляется следующим образом:
Я могу извлечь образ, и это работает, я использовал следующую команду:
sudo docker pull eclipse-mosquitto:1.4.10
Образ извлекается, но когда я пытаюсь запустить его:
$ sudo docker run -d -p 1883:1883 -p 9001:9001 --name mqtt -t eclipse-mosquitto:1.4.10
d11e29c04064ea3c546c6c9141abae73508dd2cc98492860accb4461af40b661
docker: Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded...
Я также попытался запустить его с политикой no confinement, тогда я получаю oci runtime error
:
$ sudo docker run -d --security-opt apparmor=noconfinement -p 1883:1883 -p 9001:9001 --name mqtt -t
eclipse-mosquitto:1.4.10
fe501196f9ac0d27e82b43069aafee4c806d80c1ae9ce363040b96996d74f963
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused
"process_linux.go:258: applying cgroup configuration for process caused \"mkdir /var/lib/snapd/hostfs/sys/fs/cgroup/cpuset/docker: permission denied\"".
Обратите внимание, что те же шаги на шлюзе Dell 3001 не имеют этих двух проблем, описанных выше.
Во-первых, извинения за то, что не был получен ответ на Вашу очень важную проблему. Как примечание другим, которые могут столкнуться с этой той же проблемой, основным затруднением проблемы, было то, что базовый снимок на 3001, куда докер будет работать успешно, был в более новой базовой поспешной версии, тогда как на этих 5100, базовый снимок застрял в той же устаревшей версии, которая поставила с фабрикой изображение Ядра Ubuntu. Устаревшая версия имела проблему, которая сделала получающие более новые версии базового снимка не функцией правильно. Вопрос был решен о стороне Хранилища Ubuntu так, чтобы этот более старый базовый снимок мог быть обновлен к последней проверенной версии, таким образом, эта конкретная проблема не должна влиять ни на кого больше.
Кроме того, для дальнейшего использования я хотел бы указать на Вас на snapcraft.io форумы, где все привязывается, и Ядро Ubuntu обсуждены.
Вы на самом деле отсутствуете --security-opt seccomp:unconfined
опция и -v /sys/fs/cgroup:/sys/fs/cgroup:ro
свяжите монтируются (они оба не имеют никакого смысла при использовании снимка докера, так как он уже работает полностью заключенный), настолько использующий:
--security-opt apparmor:unconfined --security-opt seccomp:unconfined -v /sys/fs/cgroup:/sys/fs/cgroup:ro
правильный поступок здесь... поспешное заключение повторилось, исполняемый файл докера будет заботиться о безопасности.
Это не выглядит хорошим, поскольку это - очень старая версия базового снимка. В основном эта проблема произошла однажды и была сообщена представителем Dell 5 месяцев назад.
Зафиксировать его.
Выполните следующую команду, чтобы усовершенствовать все снимки
sudo snap refresh
Если Вы поражаете проблему следующим образом при обновлении базового снимка от хранилища бренда
Error cannot refresh "core" :cannot refresh "core" to revision xxxx: no validation by "xxxxxx"
Это означает, что базовый снимок еще не проверен, хотя он был квалифицирован. Однако можно было все еще обновить его с --ignore-validation
опция путем выполнения:
sudo snap refresh core --ignore-validation
Поскольку Jim рекомендовал, все поспешные и связанные с ядром человечности обсуждения в наше время, перемещенные в snapcraft.io форум. Это - предпочтительное место для мгновенного обсуждения, где Вы всегда получаете своевременную обратную связь.