2020-11-20

Toolbox で Debian のコンテナイメージを利用

本ブログの過去記事 [1] において、Endless OS で Fedora Toolbox が利用できることを紹介しました。Fedora Toolbox は、開発者のためにユーザーアカウント単位でコンテナ環境を提供するコマンドラインツールです。残念なことに、Debian 派生の Endless OS であるのに、収録されている Toolbox で利用できるデフォルトのコンテナは古い Fedora のイメージになっています。できれば Endless OS のコンテナイメージを利用したいところなのですが公開されていません。せめて Debian のイメージを利用したいところです。

Endless OS 3.9 のデスクトップ画面

Fedora Toolbox は OCI の仕様に準拠したコンテナイメージを利用できることになっています。しかし Debian の Docker イメージを利用しようとしたところ、Toolbox の既知の問題に手こずったので、備忘録としてまとめました。

使用した OS は以下の通りです。

Endless OS 3.9.0 x86_64
 » toolbox 0.0.13-1endless2bem1

Toolbox で Debian のコンテナイメージを読み込む

デフォルトは Fedora 29

コンテナイメージを指定しないで作成すると、デフォルトのイメージである Fedora 29 がダウンロードされます。

bitwalk@endless:~$ toolbox create
Image required to create toolbox container.
Download registry.fedoraproject.org/f29/fedora-toolbox:29 (500MB)? [y/N]: y
Created container: fedora-toolbox-29
Enter with: toolbox enter
bitwalk@endless:~$ 

最後のメッセージの通りにタイプするとコンテナに入ります。

bitwalk@endless:~$ toolbox enter

Welcome to the Toolbox; a container where you can install and run
all your tools.

 - To create a new tools container, run 'toolbox create'.

bitwalk@toolbox:~$ 

コンテナから抜けるには exit とタイプします。

bitwalk@toolbox:~$ exit
logout
bitwalk@endless:~$ 

toolbox list で確認すると、ダウンロードしたイメージと起動しているコンテナを確認できます。

bitwalk@endless:~$ toolbox list
Images created by toolbox
IMAGE ID      IMAGE NAME                                        CREATED
4a6adf1f2a96  registry.fedoraproject.org/f29/fedora-toolbox:29  12 months ago
Containers created by toolbox
CONTAINER ID  CONTAINER NAME     CREATED         STATUS             IMAGE NAME
d71cad18afc0  fedora-toolbox-29  57 seconds ago  Up 45 seconds ago  registry.fedoraproject.org/f29/fedora-toolbox:29

指定した OCI コンテナの使用(マニュアル通りのやり方)

Docker の Debian イメージをダウンロードするには、例えば以下のようにします。

bitwalk@endless:~$ toolbox create -c sid --image docker.io/debian:sid
Image required to create toolbox container.
Download docker.io/debian:sid (500MB)? [y/N]: y
Created container: sid
Enter with: toolbox enter --container sid
bitwalk@endless:~$ 

イメージをダウンロードして、一見デフォルトと同じに動いているようですが…、コンテナに入れません。

bitwalk@endless:~$ toolbox enter --container sid
bitwalk@endless:~$

toolbox list で確認すると、コンテナだけ確認できますが起動していません。

bitwalk@endless:~$ toolbox list
Containers created by toolbox
CONTAINER ID  CONTAINER NAME  CREATED         STATUS                     IMAGE NAME
7ac8f5b0bfea  sid             32 seconds ago  Exited (1) 16 seconds ago  docker.io/library/debian:sid
bitwalk@endless:~$

参考サイト [2] によると、どうやら Toolbox 側の問題のようです。このサイトで示されている解決方法は、本ブログ記事を書いている時点では再現できなかったので他の方法を試しました。

Toolbox 用のコンテナイメージを Podman で準備

参考サイト [3] の方法でうまくいきましたので、この方法を紹介します。

Podman を使ってローカルでビルドしたイメージを Toolbox に使用する方法です。Podman はデーモンを使いませんが、コマンドは Docker と同じです。詳細は参考サイト [4] をご覧になってください。

Dockerfile は日本語環境を考慮して下記のようにしました。

Dockerfile

次のようにしてビルドします。

bitwalk@endless:~$ podman build -t debian-toolbox -f Dockerfile
STEP 1: FROM docker.io/library/debian:unstable
Getting image source signatures
Copying blob 2422b4e1b957 done
Copying config 782bdf782a done
Writing manifest to image destination
Storing signatures
STEP 2: ENV NAME=debian-toolbox VERSION=unstable
...
(途中省略)
...
STEP 16: CMD /bin/sh
STEP 17: COMMIT debian-toolbox
6227795b04f6567a210b9684db4539553117178b61cde8ca1aa27526877d429c
bitwalk@endless:~$ podman images
REPOSITORY                 TAG        IMAGE ID       CREATED         SIZE
localhost/debian-toolbox   latest     6227795b04f6   2 minutes ago   185 MB
docker.io/library/debian   unstable   782bdf782a6a   2 days ago      132 MB
bitwalk@endless:~$ 

ビルドしたローカルのイメージから toolbox create コマンドでコンテナを生成します。toolbox list コマンドでコンテナが生成されていることを確認します。

bitwalk@endless:~$ toolbox create -i localhost/debian-toolbox:latest
Created container: debian-toolbox-latest
Enter with: toolbox enter --container debian-toolbox-latest
bitwalk@endless:~$ toolbox list
Images created by toolbox
IMAGE ID      IMAGE NAME                       CREATED
6227795b04f6  localhost/debian-toolbox:latest  9 minutes ago
Containers created by toolbox
CONTAINER ID  CONTAINER NAME         CREATED             STATUS   IMAGE NAME
11e287f6d185  debian-toolbox-latest  About a minute ago  Created  localhost/debian-toolbox:latest

toolbox create コマンドを実行したときに出力された上記メッセージに従ってコンテナに入ります。

bitwalk@endless:~$ toolbox enter --container debian-toolbox-latest
bitwalk@toolbox:~$ ls
Dockerfile  ダウンロード  ドキュメント  ビデオ  ピクチャ  ミュージック
bitwalk@toolbox:~$

Fedora Silverblue 33 の場合

ちなみに、Fedora Silverblue 33 で Debian を利用する場合はどうか、同じように確認しました。

Fedora Silverblue 33 のデスクトップ画面

使用した OS は以下の通りです。

Fedora Silverblue 33 x86_64
 » toolbox-0.0.97-1.fc33.x86_64

以下のように、マニュアル通りのやり方で Debian の Docker イメージを持ってきてコンテナを利用することができました。toolbox のバージョンが上がっているので、Endless OS に収録されている Toolbox にあった問題は既に対処されているようです。

[bitwalk@localhost ~]$ toolbox create -c sid --image docker.io/debian:sid
Image required to create toolbox container.
Download docker.io/debian:sid (500MB)? [y/N]: y
Created container: sid
Enter with: toolbox enter sid
[bitwalk@localhost ~]$ toolbox enter sid
⬢[bitwalk@toolbox ~]$ ls
''$'\343\203\200\343\202\246\343\203\263\343\203\255\343\203\274\343\203\211'
''$'\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210'
''$'\343\203\207\343\202\271\343\202\257\343\203\210\343\203\203\343\203\227'
''$'\343\203\211\343\202\255\343\203\245\343\203\241\343\203\263\343\203\210'
''$'\343\203\223\343\203\207\343\202\252'
''$'\345\205\254\351\226\213'
''$'\347\224\273\345\203\217'
''$'\351\237\263\346\245\275'
⬢[bitwalk@toolbox ~]$ exit
logout
[bitwalk@localhost ~]$

ただし、ロケール関係の設定がされておらず文字化けするので追加の設定が必要になります。

まとめ

Ensless OS に収録されている toolbox が古いバージョンで不具合があったため、却っていろいろ調べることができました。😅

参考サイト

  1. bitWalk's: Endless OS と Toolbox [2020-11-19]
  2. Setting up Debian containers on Fedora Silverblue - Base-Art [2020-06-13]
  3. A quick guide to podman and toolbox in Debian (and maybe Ubuntu) - DEV [2020-02-02]
  4. DockerユーザーのためのPodmanとBuildahの紹介 - 赤帽エンジニアブログ [2020-07-16]

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: