Eu tenho lutado com o problema de executar o snap docker em um Dell 5100 IoT Edge Gateway. Eu tenho outro gateway Dell - o 3001 - que não enfrenta esse problema.
Aqui estão os passos que realizei no Dell 5100 Gateway:
Instalado o Docker Snap, aqui está a saída do '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 -
Após a instalação, executei o comando indicado em docker.help para ativar as interfaces de snap corretas:
sudo snap connect docker:home :home
Saída do comando 'snap interfaces' depois de executar o comando no item 2 acima.
$ 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:~$
Em seguida, verifiquei o status do apparmor para o docker usando o seguinte comando:
Ao contrário do que eu vejo na Saída 3001 para o mesmo comando, docker-default
está ausente:
$ 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)
Aqui está o OUTPUT do gateway Dell 3001 para o status apparmor e a lista de snap:
A grande diferença entre o 3001 e o 5100 é a versão do SO - eu sou muito novo no Ubuntu Core e não consigo entender por que o docker-default está ausente no status apparmor. Eu reiniciei, restaurei a fábrica e tentei muitas outras coisas. O problema que se manifesta é o seguinte:
Eu posso puxar uma imagem, e isso funciona, eu usei o seguinte comando:
sudo docker pull eclipse-mosquitto:1.4.10
A imagem é puxada, mas quando tento executá-la:
$ 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...
Eu também tentei executá-lo com a política de não confinamento, então recebo um 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\"".
Observe que as mesmas etapas no Dell 3001 Gateway não apresentam esses dois problemas descritos acima.