최근에 이 컨테이너가 어떻게 작동하는지 확인하려고 했기 때문에 컨테이너를 실행하기 위해 일반적으로 수행하는 작업을 주로 수행하고 싶었습니다.
$ 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
이를 수행하는 한 가지 방법은 실패한 컨테이너의 새 커밋을 만든 다음 새 진입점으로 호출하는 것입니다.
예
컨테이너 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#