AppArmor ativado no sistema, mas o perfil padrão do docker não pôde ser carregado [Ubuntu Core 16]

1

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.

    
por Ashu Joshi 11.07.2017 / 17:59

3 respostas

1

Primeiramente, peço desculpas por não receber qualquer resposta ao seu problema muito importante. Como uma nota para os outros que podem encontrar este mesmo problema, o ponto crucial do problema foi que o snap ao 3001 onde o docker rodaria com sucesso estava em uma nova versão do snap, enquanto no 5100, o snap do núcleo estava preso na mesma versão desatualizada que acompanha a imagem do Ubuntu Core de fábrica. A versão desatualizada teve um problema que fez com que o recebimento de versões mais recentes do snap principal não funcionasse corretamente. O problema foi resolvido no lado da Loja do Ubuntu, de modo que este núcleo mais antigo possa ser atualizado para a última versão validada, portanto, esse problema em particular não deve afetar ninguém.

Além disso, para referência futura, gostaria de chamar a atenção para os fóruns do snapcraft.io , onde tudo se encaixa e o Ubuntu Core é discutido.

    
por Jim Hodapp 04.10.2017 / 17:28
1

Você está realmente sentindo falta da opção --security-opt seccomp:unconfined e da -v /sys/fs/cgroup:/sys/fs/cgroup:ro bind (ambas não fazem sentido ao usar o snap docker já que ele é executado completamente confinado), portanto:

--security-opt apparmor:unconfined --security-opt seccomp:unconfined -v /sys/fs/cgroup:/sys/fs/cgroup:ro

é a coisa certa a fazer aqui ... o confinamento instantâneo em volta do executável docker cuidará da segurança.

    
por ogra 04.10.2017 / 17:09
0

Isso não parece bom, já que é uma versão muito antiga do snap do núcleo. Basicamente, este problema aconteceu uma vez e foi relatado pelo representante da Dell há 5 meses.

Para corrigir isso.

  1. Por favor, execute o seguinte comando para manter todos os snaps atualizados

    sudo snap refresh
    
  2. Se você acertar o problema da seguinte maneira ao atualizar o snap do core do repositório da marca

    Error cannot refresh "core" :cannot refresh "core" to  revision xxxx: no validation by "xxxxxx"
    

    Isso significa que o snap ao núcleo ainda não foi validado, embora tenha sido qualificado. No entanto, você ainda pode atualizá-lo com a opção --ignore-validation executando:

    sudo snap refresh core --ignore-validation
    

Como Jim recomendou, todas as discussões relacionadas ao snap e ao ubuntu-core agora mudaram para o fórum snapcraft.io . É o lugar preferido para discussões rápidas em que você sempre recebe feedback oportuno.

    
por gary-wzl 06.10.2017 / 05:40