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つの問題はありません。
まず、非常に重要な問題への返信を受け取らないことをおaび申し上げます。この同じ問題に遭遇する可能性がある他の人へのメモとして、問題の主な核心は、ドッカーが正常に実行される3001のコアスナップが新しいコアスナップバージョンであったのに対して、5100ではコアスナップがスタックしたことでした工場のUbuntu Coreイメージに同梱されていたのと同じ古いバージョンで。古いバージョンには、新しいバージョンのコアスナップの受信が正しく機能しないという問題がありました。この問題はUbuntu Store側で解決されたため、この古いコアスナップは検証済みの最新バージョンに更新できるため、この特定の問題は他のユーザーには影響しません。
また、今後の参考のために、すべてのスナップとUbuntu Coreについて説明している snapcraft.ioフォーラム を紹介します。
実際には--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回発生し、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が推奨したように、最近ではすべてのスナップおよびubuntu-core関連の議論は snapcraft.io フォーラムに移動しました。いつもタイムリーなフィードバックを得ることができる、きびきびした議論に適した場所です。