Armadilloフォーラム

VSCodeで開発版SWUをビルドできなくなってしまった

takeshita_kyouhei

2024年3月25日 14時50分

ATDE9内のVSCodeで開発版SWUイメージのビルドができなくなってしまいました

本件、ATDE9のディスク容量が逼迫していたこともあり、誤って「/home/atmark/.local/share/containers/storage/vfs/dir」内のフォルダを削除してしまいました
これによって、VSCodeで開発版SWUイメージのビルドができなくなってしまいました

ERRO[0017] error deleting build container "09813dfec499709683eb7f84d74d0e6295270eaf30a47b4a7c6ff728745c6bc4": identifier is not a container 
Error: identifier is not a container: error preparing container for next step: error creating build container: error creating container: error creating read-write layer with ID "556ef9a7e69154adebabdf2a220463f742707e50355b6bc6117dea2c074b2970": Stat /home/atmark/.local/share/containers/storage/vfs/dir/241892aff9f485225804f364c34bcfecff29486e4949bc11c10998b72616245e: no such file or directory
イメージをビルドできませんでした。

上記について解決する方法はありますでしょうか?

お手数をおかけしますが、ご回答の程をお願いいたします

コメント

at_satoshi.ohta

2024年3月25日 16時42分

太田です。

エラーをこちらでも再現しました。

下記のコマンドをATDEのターミナルで実行した後、再度ABOSDEで開発版SWUイメージをビルドしてみていただけますか?
「プロジェクト名」の部分は使用しているプロジェクト名に置き換えてください。

podman rmi docker.io/arm64v8/debian:bullseye-slim
podman rmi localhost/プロジェクト名
podman rmi localhost/arm64v8/プロジェクト名

よろしくお願いいたします。

at_satoshi.ohta

2024年3月25日 17時20分

太田です。

立て続けに申し訳ありません。
ちなみにですが、コンテナイメージをビルドする際に一時的にATDE上の空き容量を大きく消費するので、
ビルドの過程で「no space left on device」 のエラーが発生してビルドできないことがあります。
コンテナやコンテナイメージなどを一度削除してよければ(お客様が直接コンテナやコンテナイメージ内を編集していなければ問題ないです)、ATDE上のターミナルで下記のコマンドを実行して、コンテナやコンテナイメージなどを削除した後、「 fuse-overlayfs」をインストールすればビルドに使用する容量が削減されます。

$ podman system reset
# コンテナ、Pod、コンテナイメージ、ビルドキャッシュを全て削除するか聞かれる(Yes)
$ sudo apt install fuse-overlayfs

よろしくお願いいたします。

takeshita_kyouhei

2024年3月25日 20時53分

返信いただきありがとうございます

>下記のコマンドをATDEのターミナルで実行した後、再度ABOSDEで開発版SWUイメージをビルドしてみていただけますか?
>「プロジェクト名」の部分は使用しているプロジェクト名に置き換えてください。
>
>podman rmi docker.io/arm64v8/debian:bullseye-slim
>podman rmi localhost/プロジェクト名
>podman rmi localhost/arm64v8/プロジェクト名
上記コマンド実行後、開発版SWUイメージの作成が実施できるようになりました
 「podman rmi localhost/arm64v8/プロジェクト名」コマンド実行時にはエラーが出ました
 No such file or directoryというエラーが出ていました

>コンテナやコンテナイメージなどを一度削除してよければ(お客様が直接コンテナやコンテナイメージ内を編集していなければ問題ないです)、ATDE上のターミナルで下記のコマンドを実行して、コンテナやコンテナイメージなどを削除した後、「 fuse-overlayfs」をインストールすればビルドに使用する容量が削減されます。
>
>

>$ podman system reset
># コンテナ、Pod、コンテナイメージ、ビルドキャッシュを全て削除するか聞かれる(Yes)
>$ sudo apt install fuse-overlayfs
>

コンテナファイルがATDE9の容量を圧迫した場合、どのように削除するのがよいのでしょうか?

takeshita_kyouhei

2024年3月25日 23時47分

また、次のような事象も発生しているのですが、解決方法はありますでしょうか?

・Dockerfileでコピー指示をしているファイルが所定のディレクトリにコピーされていない
VSCode上で作成したプロジェクト/container内に配置した「hosts」ファイルについて、Dockerfileに記載したコマンドでコンテナ内へコピーするよう指示しています

コマンド
COPY hosts /etc/hosts

しかし、上記コピーがされていません
→Armadillo-IoT G4にsshで接続し、podman exec -it data_uploader /bin/bashコマンドでコンテナへ接続
 cat /etc/hostsコマンドで内部を確認しましたが、想定された設定がされているhostsファイルではありませんでした

使用している回線及び宛先サーバの都合で、hostsによる名前解決が必須になるため、hostsファイルの上書きが必要になります

at_satoshi.ohta

2024年3月26日 13時25分

太田です。

お世話になっております。

>「podman rmi localhost/arm64v8/プロジェクト名」コマンド実行時にはエラーが出ました
> No such file or directoryというエラーが出ていました

これは開発版SWUイメージをビルドできるようになったのであれば問題ないです。

> コンテナファイルがATDE9の容量を圧迫した場合、どのように削除するのがよいのでしょうか?

コンテナイメージが一番容量を消費しているということであれば、

podman images -a

を実行して下記以外のものがあるか確認してください。

docker.io/arm64v8/debian:bullseye-slim
localhost/プロジェクト名
localhost/arm64v8/プロジェクト名
<none>

none は「localhost/プロジェクト名」などを作成する過程で作られます。
もし、プロジェクトに必要ないコンテナイメージで削除してよいものがあれば

podman rmi [IMAGE ID]

で削除してください。 [IMAGE ID] は podman images コマンドを実行時に表示されます。

また、前回回答したとおり、コンテナイメージをビルドする時に空き容量を大きく使用する問題については、
「fuse-overlayfs」をインストールして対応していただければと思います。

> また、次のような事象も発生しているのですが、解決方法はありますでしょうか?
> ・Dockerfileでコピー指示をしているファイルが所定のディレクトリにコピーされていない

こちらについて同じ事象を再現しました。

https://docs.docker.jp/engine/reference/commandline/run.html#hosts-add-…

上記によると、コンテナ内の /etc/hosts にホスト名とIPアドレスを追加するには podman run 時に --add-host というオプションを追加する必要があるようです。

プロジェクトディレクトリにある config/app.conf の add_args コマンドを使用することで、Armadillo 内のコンテナを起動する時に
--add-host オプションを追加できます。

例えばホスト名「hoge」でIPアドレス「11:222:333:44」の場合は config/app.conf に
下記のように記述すれば /etc/hosts に追加できます。

add_args --add-host=hoge:11:222:333:44

add_args に関しましてはマニュアルの「 podman run に引数を渡す設定」をご参照ください。

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

app.conf を編集したのち、開発版SWUイメージを作成して Armadillo にインストールしてください。

その後、Armadillo に ssh で接続して下記を実行してください。

podman exec -it data_uploader cat /etc/hosts

を実行すると確認できると思います。
ここではコンテナ名を「data_uploader」としています。

よろしくお願いいたします。

takeshita_kyouhei

2024年3月27日 9時44分

本件、返信いただきありがとうございます

> >「podman rmi localhost/arm64v8/プロジェクト名」コマンド実行時にはエラーが出ました
> > No such file or directoryというエラーが出ていました
>
> これは開発版SWUイメージをビルドできるようになったのであれば問題ないです。
>
> > コンテナファイルがATDE9の容量を圧迫した場合、どのように削除するのがよいのでしょうか?
>
> コンテナイメージが一番容量を消費しているということであれば、
>

> podman images -a
> 

> を実行して下記以外のものがあるか確認してください。
>

> docker.io/arm64v8/debian:bullseye-slim
> localhost/プロジェクト名
> localhost/arm64v8/プロジェクト名
> <none>
> 

> none は「localhost/プロジェクト名」などを作成する過程で作られます。
> もし、プロジェクトに必要ないコンテナイメージで削除してよいものがあれば
>

> podman rmi [IMAGE ID]
> 

> で削除してください。 [IMAGE ID] は podman images コマンドを実行時に表示されます。
>
> また、前回回答したとおり、コンテナイメージをビルドする時に空き容量を大きく使用する問題については、
> 「fuse-overlayfs」をインストールして対応していただければと思います。
上記について参考にさせていただきます
 現状ではまだコマンド実行未実施ですが、近いうちに実行してみたいと思います
 対策としてはほかにもVirtualBoxでATDE9のHDDサイズを変更できないか調査中になります(ATDE9はVirtualBoxで動作させています)

> > また、次のような事象も発生しているのですが、解決方法はありますでしょうか?
> > ・Dockerfileでコピー指示をしているファイルが所定のディレクトリにコピーされていない
>
> こちらについて同じ事象を再現しました。
>
> https://docs.docker.jp/engine/reference/commandline/run.html#hosts-add-…
>
> 上記によると、コンテナ内の /etc/hosts にホスト名とIPアドレスを追加するには podman run 時に --add-host というオプションを追加する必要があるようです。
>
> プロジェクトディレクトリにある config/app.conf の add_args コマンドを使用することで、Armadillo 内のコンテナを起動する時に
> --add-host オプションを追加できます。
>
> 例えばホスト名「hoge」でIPアドレス「11:222:333:44」の場合は config/app.conf に
> 下記のように記述すれば /etc/hosts に追加できます。
>
>

> add_args --add-host=hoge:11:222:333:44
> 

>
> add_args に関しましてはマニュアルの「 podman run に引数を渡す設定」をご参照ください。
>
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
>
> app.conf を編集したのち、開発版SWUイメージを作成して Armadillo にインストールしてください。
>
> その後、Armadillo に ssh で接続して下記を実行してください。
>

> podman exec -it data_uploader cat /etc/hosts
> 

> を実行すると確認できると思います。
> ここではコンテナ名を「data_uploader」としています。
上記によって問題解決できました

/etc/hostsに望んだ情報が記載され、そのおかげで「data_uploader」で名前解決、想定されたサーバアクセスができたことを確認しました

takeshita_kyouhei

2024年3月27日 11時28分

> コンテナファイルがATDE9の容量を圧迫した場合、どのように削除するのがよいのでしょうか?
>
> コンテナイメージが一番容量を消費しているということであれば、
>

> podman images -a
> 

> を実行して下記以外のものがあるか確認してください。
>

> docker.io/arm64v8/debian:bullseye-slim
> localhost/プロジェクト名
> localhost/arm64v8/プロジェクト名
> <none>
> 

> none は「localhost/プロジェクト名」などを作成する過程で作られます。
> もし、プロジェクトに必要ないコンテナイメージで削除してよいものがあれば
>

> podman rmi [IMAGE ID]
> 

> で削除してください。 [IMAGE ID] は podman images コマンドを実行時に表示されます。
>
> また、前回回答したとおり、コンテナイメージをビルドする時に空き容量を大きく使用する問題については、
> 「fuse-overlayfs」をインストールして対応していただければと思います。
上記で紹介されているコンテナイメージの削除を試行してみましたが、エラーで失敗しました

atmark@atde9:~$ podman images -a
REPOSITORY                       TAG            IMAGE ID      CREATED         SIZE
localhost/data_uploader          latest         790b3a26959d  24 minutes ago  785 MB
localhost/arm64v8/data_uploader  latest         790b3a26959d  24 minutes ago  785 MB
<none>                           <none>         2f3e0441cc4f  25 minutes ago  784 MB
<none>                           <none>         740368a2d04b  26 minutes ago  784 MB
<none>                           <none>         fda4e2f46425  27 minutes ago  784 MB
<none>                           <none>         6321eaf0f093  28 minutes ago  784 MB
<none>                           <none>         ca6d0832af5f  28 minutes ago  784 MB
<none>                           <none>         894808ed7266  29 minutes ago  784 MB
<none>                           <none>         5a294db885b8  30 minutes ago  784 MB
<none>                           <none>         b0a20672377d  31 minutes ago  784 MB
<none>                           <none>         27bdbaaae457  33 minutes ago  784 MB
<none>                           <none>         a38dc4e5be44  37 minutes ago  784 MB
<none>                           <none>         bdb357d9d0ab  42 minutes ago  78.1 MB
<none>                           <none>         a15e7352443f  18 hours ago    78.1 MB
<none>                           <none>         81863dcaa920  18 hours ago    78.1 MB
<none>                           <none>         08beee24e35c  41 hours ago    78.1 MB
<none>                           <none>         0440a013739c  41 hours ago    78 MB
<none>                           <none>         b4af0e2a2bc7  41 hours ago    78 MB
docker.io/arm64v8/debian         bullseye-slim  9f343c44686a  2 weeks ago     78 MB
docker.io/arm64v8/debian         bullseye       a5c48cac0790  2 weeks ago     123 MB
atmark@atde9:~$ sudo podman rmi b4af0e2a2bc7
Error: 1 error occurred:
	* unable to find a name and tag match for b4af0e2a2bc7 in repotags: no such image

IMAGEIDを指定しているのですが、削除できない原因は何なのでしょうか?

at_satoshi.ohta

2024年3月27日 15時27分

太田です。

下記のように sudo をつけずにもう一度実行してみていただけますでしょうか?

podman rmi b4af0e2a2bc7

よろしくお願いいたします。

takeshita_kyouhei

2024年3月28日 9時50分

> 太田です。
>
> 下記のように sudo をつけずにもう一度実行してみていただけますでしょうか?
>
>

> podman rmi b4af0e2a2bc7
> 

>
> よろしくお願いいたします。
返信有り難うございます

以下の通り、「sudo」をつけずに実行しました
エラーの内容が変わったようです

atmark@atde9:~$ podman rmi b4af0e2a2bc7
Error: 1 error occurred:
	* unable to delete "b4af0e2a2bc7ca917358fb75591449c4835d93cd938b17e87bb0102888da47e3" (cannot be forced) - image has dependent child images: image is being used

at_satoshi.ohta

2024年3月28日 11時06分

太田です。

このエラーは、このコンテナイメージを元に作成されるコンテナイメージがあることが原因でエラーになります。
下記のコマンドをATDE上のターミナルで実行すると、「b4af0e2a2bc7」から作成されたコンテナイメージのIMAGE ID が出力されるはずです。

for i in $(podman images -aq); do podman history $i | grep -q b4af0e2a2bc7 && echo $i; done

出力結果を教えていただけますでしょうか?

よろしくお願いいたします。

takeshita_kyouhei

2024年3月28日 13時50分

>

> for i in $(podman images -aq); do podman history $i | grep -q b4af0e2a2bc7 && echo $i; done
> 

>
> 出力結果を教えていただけますでしょうか?
コマンドを実行しましたが、何も出力されませんでした

atmark@atde9:~$ for i in $(podman images -aq); do podman history $i | grep -q b4af0e2a2bc7 && echo $i; done
atmark@atde9:~$ 

手動入力で1回、コマンドをコピーして1回入力しています

at_satoshi.ohta

2024年3月28日 18時58分

太田です。

コマンドを実行していただきありがとうございます。
このコマンドで「b4af0e2a2bc7」を元に作成されたコンテナイメージを特定できると思ったのですが、
何も出力されないということで了解しました。

下記のコマンドでプロジェクトのコンテナイメージも含めて全て消して、podmanの環境を一度リセットしていただいた方が確実かと思います。

podman system reset

その上で、開発版SWUを生成するボタンを押していただければ
プロジェクトに必要なコンテナイメージのみがある環境が作れると思います。

よろしくお願いいたします。