Rio Blog

世界のどこかでゆるく生きるITエンジニアのブログ

docker execコマンド実行時のエラー

$ docker exec -it web /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: open /dev/ptmx: no such file or directory: unknown

Dockerコンテナに入ろうとしたら、上記のエラーが表示された。「何もしていない」とは言わないが、すでに何度も入っていたので、入れなくなった原因が不明である。

エラー内容をググると…

似たようなトラブルに遭遇している人はいるが、若干エラー内容が異なるのと、根本的な原因や対処法が明記されていない。

どうやらLinuxのバージョンとrunc(低レベルコンテナランタイム?)あたりが関係していそうだが、よくわからない。

dnfコマンドでruncをアップグレードしたり、コンテナを立ち上げ直すことで一応は解決しているようなので、試してみる。

https://github.com/moby/moby/issues/43969

https://qiita.com/ryome/items/ff53bf353a9f0a34262b

runcのupgrade

$ dnf upgrade runc
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 3:14:58 ago on Tue Jan  9 23:35:18 2024.
Package runc available, but not installed.
No match for argument: runc
Error: No packages marked for upgrade.

そもそもruncが入っていなかった。以前は問題なく動いていたので、今回はruncは無関係ということか。

ちなみに、dnf upgradeとdnf updateの違いはないそうです。yumコマンドだと違いはあるんですが、yumの後継であるdnfでは同じなんですねー

https://atmarkit.itmedia.co.jp/ait/articles/2002/06/news010.html#sample1

コンテナを再度立ち上げる

$ docker run -itd --name web web:1.0
dc5fa8c526f3810a05fd908ad0c097ea6f578bb81476c378a881f0f4b9033
$ docker exec -it web /bin/bash
[root@dc5ea6c526f4 /]#  

うーん、入れた…

おわりに

Jenkinsのジョブとしてコンテナ内のファイルを操作しており、その過程で何かやってしまったのが原因だと思っていますが、真相は不明です。何はともあれ、一応解決できたのでよかったです。