web-dev-qa-db-ja.com

システムでAppArmorは有効になっていますが、docker-defaultプロファイルをロードできませんでした[Ubuntu Core 16]

Dell 5100 IoT Edge GatewayでDockerスナップを実行する問題に取り組んでいます。この問題に直面していない別のDell Gateway-3001があります。

Dell 5100ゲートウェイで実行した手順は次のとおりです。

Docker Snapをインストールしました。「スナップリスト」の出力は次のとおりです。

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に記載されているコマンドを実行して、正しいスナップインターフェイスを有効にしました。

Sudo snap connect docker:home :home

上記の#2のコマンドを実行した後の「snap interfaces」コマンドの出力。

$ 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:~$

次に、次のコマンドを使用してdockerのapparmorステータスを確認しました。

同じコマンドの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ゲートウェイからの出力は次のとおりです。

3001と5100の大きな違いはOSバージョンです。UbuntuCoreを初めて使用するため、apparmorステータスでdocker-defaultが欠落している理由がわかりません。再起動し、工場で復元して、他の多くのことを試しました。現れる問題は次のとおりです。

私はイメージをプルすることができます、そしてそれは動作します、私は次のコマンドを使用しました:

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...

また、制限なしポリシーで実行しようとすると、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 Gatewayでの同じ手順には、上記の2つの問題はありません。

1
Ashu Joshi

まず、非常に重要な問題への返信を受け取らないことをおaび申し上げます。この同じ問題に遭遇する可能性がある他の人へのメモとして、問題の主な核心は、ドッカーが正常に実行される3001のコアスナップが新しいコアスナップバージョンであったのに対して、5100ではコアスナップがスタックしたことでした工場のUbuntu Coreイメージに同梱されていたのと同じ古いバージョンで。古いバージョンには、新しいバージョンのコアスナップの受信が正しく機能しないという問題がありました。この問題はUbuntu Store側で解決されたため、この古いコアスナップは検証済みの最新バージョンに更新できるため、この特定の問題は他のユーザーには影響しません。

また、今後の参考のために、すべてのスナップとUbuntu Coreについて説明している snapcraft.ioフォーラム を紹介します。

2
Jim Hodapp

実際には--security-opt seccomp:unconfinedオプションと-v /sys/fs/cgroup:/sys/fs/cgroup:roバインドマウントがありません(既に完全に制限されて実行されるため、Dockerスナップを使用する場合は両方とも意味がありません)。

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

ここで行うのは正しいことです... docker実行可能ファイルの周りにラップされたスナップの閉じ込めがセキュリティの面倒を見るでしょう。

1
ogra

これは、コアスナップの非常に古いバージョンであるため、見栄えがよくありません。基本的に、この問題は1回発生し、5か月前にデルの担当者によって報告されました。

それを修正します。

  1. 次のコマンドを実行して、すべてのスナップを最新の状態に保ちます

    Sudo snap refresh
    
  2. ブランドストアからコアスナップを更新するときに次のように問題が発生した場合

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

    つまり、コアスナップは認定されているものの、まだ検証されていません。ただし、次を実行することで、--ignore-validationオプションを使用して更新することができます。

    Sudo snap refresh core --ignore-validation
    

Jimが推奨したように、最近ではすべてのスナップおよびubuntu-core関連の議論は snapcraft.io フォーラムに移動しました。いつもタイムリーなフィードバックを得ることができる、きびきびした議論に適した場所です。

0
gary-wzl