世界のやまさ

SEKAI NO YAMASA

Windows コンテナ の docker build 時に hcsshim::PrepareLayer - failed failed in Win32: Incorrect function. (0x1) が発生する場合の対処

問題

Windows コンテナで docker-compose build で次のエラーが発生。

f:id:nnasaki:20210820181541p:plain
エラー画面

何回か試したが解消せず。

原因

どうやら Box が原因っぽい。

stackoverflow.com

C:\windows\system32\driver\cbfsconnect2017.sys を利用していると発生するっぽい。 cbfs6.sys だということもあるそうでこの辺はよくわからない。

確認したところ確かに該当のファイルが存在していた。

f:id:nnasaki:20210820182215p:plain
cbfsconnect2017.sys

fltmc というコマンドで利用していることを確認できる。レガシーとでるのでなんとなく良くなさそうな感じはする

f:id:nnasaki:20210820182305p:plain
ファイル削除前fltmc確認結果

対処

とりあえず読み込まれないようにリネームして再起動をした

f:id:nnasaki:20210820182416p:plain
cbfsconnect2017.sys.bakにリネーム

対処確認

再び fltmc で確認したところ読み込みはされなくなっていた。

f:id:nnasaki:20210820183835p:plain
ファイルリネーム後fltmc確認結果

docker-compose build でエラーが出ないことを確認した。

副作用

当然ながら、 Box Drive クライアントがエラー出るようになってしまい起動できなくなる。

まとめ

Github に Issue が上がっていてまだ解決していない。

github.com

Box Drive が利用しているリネームしたドライバーは CBFS Connect というものみたいだ。このドライバーは2020年にワークアラウンドで対応したとも Issue に書いてあるが、まだ発生しているようにも思える。

www.callback.com

Box Drive を利用する場合 Windows コンテナを利用するのは控えたほうが良いと言わざるを得ない。また、Box 以外にもこのドライバーを利用しているソフトはいくつかあるので、結構根が深い問題となりそう。