GalliumOSでSnapが使えない件(使えるようになりました)とDocker

Posted by 雅楽斎 on Friday, July 5, 2019

TOC

いつの間にか使えるようになってました(2020/01/09追記)

数日に1回、軽いWebブラウズや作業で使い続けているAcer C720。元々Chromebookとして発売されていたこのノートPCはM.2 SSDの換装を経て、GalliumOS 3.0をインストールして使っています。

Acer Chromebook C720のSSD換装

Acer Chromebook C720にGalliumOS3.0をインストールする

Ubuntu 18.04由来のパッケージはきちんとアップデートされているので、PCを起動するたびにaptの更新はしていますし、たま〜に「snap使えるようになってないかなぁ」と思い、次のコマンドを実行しては「kernelの更新が来ない限りは使えるようにならないのかなぁ」と感じていました。

$ systemctl status snapd.service

GalliumOS3.1がリリースされていた

直後には気づかなかったのですが、2019年12月にGalliumOS 3.1がリリースされていました。

News/GalliumOS 3.1 - GalliumOS Wiki

内容はメンテナンスリリースで、インストーラーの改修やリリース時点のアップデートが含まれているとのことでした。

GalliumOS 3.1 Released : GalliumOS

それではと、もしかしたらsnapを使えるようになってるかもしれないし、kernelも更新されてるといいなと思い、おもむろに次のコマンドを打ちます。

$ galliumos-update

いくつかパッケージが更新されるにはされるのですが、どうも裏で実行しているのは

  • sudo apt -qq update
  • sudo apt full-upgrade

で、うちの環境では更新されたのはlibnss3くらいでした。uname -aでもkernelが変わった感じがなく、う〜んと思いながら念の為snapdサービスの状態を確認すると

$ systemctl status snapd.service
● snapd.service - Snappy daemon
   Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: en
   Active: active (running) since Thu 2020-01-09 13:13:47 JST; 20min ago
 Main PID: 5940 (snapd)
    Tasks: 13 (limit: 4632)
   CGroup: /system.slice/snapd.service
           └─5940 /usr/lib/snapd/snapd

 1月 09 13:13:46 chrx systemd[1]: Starting Snappy daemon...
 1月 09 13:13:46 chrx snapd[5940]: AppArmor status: apparmor is enabled but some
 1月 09 13:13:47 chrx snapd[5940]: AppArmor status: apparmor is enabled but some
 1月 09 13:13:47 chrx snapd[5940]: patch.go:64: Patching system state level 6 to
 1月 09 13:13:47 chrx snapd[5940]: patch.go:64: Patching system state level 6 to
 1月 09 13:13:47 chrx snapd[5940]: daemon.go:346: started snapd/2.42.5 (series 1
 1月 09 13:13:47 chrx snapd[5940]: daemon.go:439: adjusting startup timeout by 3
 1月 09 13:13:47 chrx snapd[5940]: helpers.go:712: cannot retrieve info for snap
 1月 09 13:13:47 chrx snapd[5940]: helpers.go:712: cannot retrieve info for snap
 1月 09 13:13:47 chrx systemd[1]: Started Snappy daemon.

起動しとるやんけ!

とりあえずvlcをsnapからインストールしてみます。

$ sudo snap install vlc
2020-01-09T13:13:45+09:00 INFO Waiting for restart...
vlc 3.0.8 from VideoLAN✓ installed

普通に入りまして。

もしかしたら去年の年末に使った時に更新していて、その時からGalliumOS 3.1のsnapが使えるようになったのかもしれません。ともあれ、無事にsnapが使えるようになりました。以前使えなかった時とパッケージを比較してみましょう。

$ apt-cache policy snapd
snapd:
  Installed: 2.42.1+18.04
  Candidate: 2.42.1+18.04
  Version table:
 *** 2.42.1+18.04 990
        990 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     2.41+19.10.1 500
        500 http://jp.archive.ubuntu.com/ubuntu eoan/main amd64 Packages
     2.37.4+18.04.1 990
        990 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2.32.5+18.04 990
        990 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

ひとまず、snapdのバージョンが2.39.2+18.04から2.42.1+18.04に上がったことで実行できた可能性があります。

という訳で、2020年1月現在のGalliumOSでのdockerについて改めて調べました。

Dockerはどのバージョンをインストールするべきか(更新版)

Ubuntuのパッケージとして提供されているもの

Ubuntu 18.04のパッケージは18.09.7-0ubuntu1~18.04.4です。

$ apt-cache policy docker.io
docker.io:
  Installed: (none)
  Candidate: 18.09.7-0ubuntu1~18.04.4
  Version table:
     18.09.7-0ubuntu1~18.04.4 990
        990 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
        990 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages
     17.12.1-0ubuntu1 990
        990 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages

Docker Inc.が提供するパッケージ

Docker Inc.が提供するUbuntu 18.04用パッケージは5:19.03.5~3-0~ubuntu-bionicです。

$ apt-cache policy docker-ce
docker-ce:
  Installed: 5:19.03.5~3-0~ubuntu-bionic
  Candidate: 5:19.03.5~3-0~ubuntu-bionic
  Version table:
 *** 5:19.03.5~3-0~ubuntu-bionic 990
        990 http://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
        100 /var/lib/dpkg/status
     5:19.03.4~3-0~ubuntu-bionic 990
        990 http://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
(長いので省略)

Canonicalが提供するsnapパッケージ

Canonicalが提供するDockerのsnapパッケージは18.09.9です。

$ snap find docker
Name                    Version        Publisher              Notes    Summary
docker                  18.09.9        canonical✓             -        Docker container runtime
(略)

という訳で、現状ではどれもメンテナンスされているように見えます。選ぶ基準は

  1. 新機能を使いたい場合、Docker Inc.が提供するパッケージ 5:19.03.5~3-0~ubuntu-bionic
  2. OSのバージョンに依存しないパッケージを選ぶ場合、snap 18.09.9
  3. OS全体のメンテナンスに合わせる場合、Ubuntu付属のパッケージ 18.09.7-0ubuntu1~18.04.4

を使用するのがセオリーではないかと思います。

せっかくなのでsnapのDockerを試す

snapのDockerは以下でインストールできます。

# snap install docker
docker 18.09.9 from Canonical✓ installed

バイナリは/snap/bin/にインストールされますが、docker-composeとdocker-machineが一緒にインストールされるのが地味に嬉しいところ。

$ /snap/bin/docker --version
Docker version 18.09.9, build 1752eb3
$ /snap/bin/docker-compose --version
docker-compose version 1.23.2, build unknown
$ /snap/bin/docker-machine --version
docker-machine version 0.16.1, build cce350d

Hello, worldしてみます。

# /snap/bin/docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

実行自体は問題ありません。また、普段実行しているdockerコンテナも普通に実行できました。ですが、コンテナの起動が如実に遅いです。1このオーバーヘッドを我慢できるかが一つポイントになるかと思います。

スポンサーリンク

↓以下は過去の内容で、現在GalliumOS3.1ではSnapが利用可能です。↓

GalliumOSにはSnapが入ってない

ChromeOS搭載PC特化のLinuxディストリビューションであるGalliumOS3.0ですが、snapdがインストールされていませんでした。

$ dpkg -l | grep snapd

但し、GalliumOS3.0はUbuntu18.04がベースで、apt-lineもUbuntuのものがそのまま使われているので、他のパッケージと同じようにインストールして利用することは可能だと思っていた時期が私にもありました。

$ apt-cache policy snapd
snapd:
  Installed: (none)
  Candidate: 2.39.2+18.04
  Version table:
     2.39.2+18.04 500
        500 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
     2.37.4+18.04.1 500
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2.32.5+18.04 500
        500 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

Snap(snapd)をインストール(失敗)

普通にインストールします。

# apt-get install snapd

systemd系のログがぞろぞろ出てきてたので状態を確認してみます。

$ systemctl status snapd.service
● snapd.service - Snappy daemon
   Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-07-05 22:26:20 JST; 3min 35s ago
  Process: 4896 ExecStart=/usr/lib/snapd/snapd (code=exited, status=42)
 Main PID: 4896 (code=exited, status=42)

 7月 05 22:26:15 chrx systemd[1]: Starting Snappy daemon...
 7月 05 22:26:15 chrx snapd[4896]: AppArmor status: apparmor is enabled but some kernel features are missing: dbus, network
 7月 05 22:26:15 chrx snapd[4896]: daemon.go:379: started snapd/2.39.2+18.04 (series 16; classic; devmode) galliumos/3.0 (amd64) l
 7月 05 22:26:15 chrx systemd[1]: Started Snappy daemon.
 7月 05 22:26:20 chrx snapd[4896]: daemon.go:611: gracefully waiting for running hooks
 7月 05 22:26:20 chrx snapd[4896]: daemon.go:613: done waiting for running hooks
 7月 05 22:26:20 chrx snapd[4896]: daemon stop requested to wait for socket activation
$ systemctl is-enabled snapd.service
enabled
# systemctl start snapd.service
$ systemctl status snapd.service
● snapd.service - Snappy daemon
   Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-07-05 22:33:58 JST; 3s ago
  Process: 5185 ExecStart=/usr/lib/snapd/snapd (code=exited, status=42)
 Main PID: 5185 (code=exited, status=42)

一緒ですね・・・とりあえず別バージョンをバージョン指定でインストールします。

# apt-get install snapd=2.37.4+18.04.1

変わらん・・・どうも「daemon.go:611: gracefully waiting for running hooks」でググるとsquashfsとkernelの問題で、最新のkernelで治ってるとのことですが、GalliumOSはCPU別にkernelをビルドしてるくらいなのですぐの反映は望み薄かな・・・

なのでSnapは一旦諦め。

Dockerはどのバージョンをインストールするべきか

UbuntuでDockerをインストールする場合、選択肢が主に3つあって、

  1. Ubuntuのパッケージとして提供されているもの
  2. Docker Inc.が提供するパッケージ
  3. Canonicalが提供するsnapパッケージ

どれがいいかと思っていたところ3はなくなり、1もちょっと古い2ので結局2しかなくなってしまいました。

Dockerが提供するDockerをインストール

https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository

# apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable
# apt-get install docker-ce docker-ce-cli containerd.io

インストールが終わったら試しにhello-worldを。

# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

正常終了。

docker-composeをインストールする

docker-composeはパッケージで管理したいのでUbuntu 18.04のものをインストール(古いけど)

# apt-get install docker-compose
# docker-compose version
docker-compose version 1.17.1, build unknown
docker-py version: 2.5.1
CPython version: 2.7.15+
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018

正直なところ、Snapが使えないのは厳しいですね。Dockerが使えるのはありがたいんですが。


  1. Javaアプリとか.netアプリを実行した時の感じに近いです。 [return]
  2. 現時点で18.09.7 [return]

comments powered by Disqus