実行できないドッカーコンテナのファイルシステムを確認するには?

実行できないドッカーコンテナのファイルシステムを確認するには?

最近、このコンテナがどのように機能するかを確認しようとしたので、コンテナを実行するために通常行うことを主に実行したいと思いました。

$ docker exec -it <container SHA> /bin/bash

ただし、この場合、この特定のコンテナを完全に設定して実行することはできず、実行したくありません。私はファイルシステムに入り、それがどのように構築されたのかを調べて見ることができるようにしたいと思います。

失敗した実行は次のとおりです。

$ docker run prismagraphql/prisma:1.21 --name blah
Exception in thread "main" java.lang.RuntimeException: Unable to load Prisma config: java.lang.RuntimeException: No valid Prisma config could be loaded.
    at scala.sys.package$.error(package.scala:27)
    at com.prisma.config.ConfigLoader$.load(ConfigLoader.scala:40)
    at com.prisma.local.PrismaLocalDependencies.<init>(PrismaLocalDependencies.scala:36)
    at com.prisma.local.PrismaLocalMain$.delayedEndpoint$com$prisma$local$PrismaLocalMain$1(PrismaLocalMain.scala:14)
    at com.prisma.local.PrismaLocalMain$delayedInit$body.apply(PrismaLocalMain.scala:11)
    at scala.Function0.apply$mcV$sp(Function0.scala:34)
    at scala.Function0.apply$mcV$sp$(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App.$anonfun$main$1$adapted(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at scala.App.main(App.scala:76)
    at scala.App.main$(App.scala:74)
    at com.prisma.local.PrismaLocalMain$.main(PrismaLocalMain.scala:11)
    at com.prisma.local.PrismaLocalMain.main(PrismaLocalMain.scala)

どうすればいいですか?

ベストアンサー1

これを行う1つの方法は、失敗したコンテナの新しいコミットを作成し、新しいエントリポイントとして呼び出すことです。

はい

コンテナIDの取得

$ docker ps -a | grep prisma:1.21 | awk '{print $1}'
96b3a1ed8ae2

このコンテナIDの新しいコミットを作成します。

$ docker commit 29e98275723a tmpprisma
sha256:a83e0ee158d57f262230df752197a1f1e823660c42a9250e3c1ce803b41746c5

新しいエントリポイントを使用してコンテナイメージをインポートする

$ docker run -ti --entrypoint /bin/bash tmpprisma
bash-4.4#

これで、コンテナ内で使用されているスクリプトを調べることができます。

bash-4.4# ls -l app/bin/prisma-local
-rwxr--r--    1 root     root         16474 Apr 30  2018 app/bin/prisma-local
bash-4.4#

引用する

おすすめ記事