Docker:如何访问由java制作的Docker容器:8-jdk-alpine

Docker:如何访问由java制作的Docker容器:8-jdk-alpine,java,bash,docker,containers,Java,Bash,Docker,Containers,我正在Mint19Linux系统中尝试。我使用以下内容制作了一个docker图像:- FROM java:8-jdk-alpine COPY ./target/demo-docker-0.0.1-SNAPSHOT.jar /usr/app/ WORKDIR /usr/app RUN sh -c 'touch demo-docker-0.0.1-SNAPSHOT.jar' ENTRYPOINT ["java","-jar","demo-docker-0.0.1-SNAPSHOT.jar"]

我正在Mint19Linux系统中尝试。我使用以下内容制作了一个docker图像:-

FROM java:8-jdk-alpine

COPY ./target/demo-docker-0.0.1-SNAPSHOT.jar /usr/app/

WORKDIR /usr/app

RUN sh -c 'touch demo-docker-0.0.1-SNAPSHOT.jar'

ENTRYPOINT ["java","-jar","demo-docker-0.0.1-SNAPSHOT.jar"]
我以docker run-p8080:8080——名称myApp-dmygreet的形式运行它。但我想访问正在运行的容器。我尝试了
docker exec-it--user root myApp/bin/bash
我收到了一条错误消息:-

OCI运行时exec失败:exec失败:容器\u linux.go:348:启动 容器进程导致“exec:\”/bin/bash\”:stat/bin/bash:没有这样的 文件或目录:未知

我可以通过上面的命令访问docker容器的大部分。访问后,我可以看到所有docker容器都有类似Linux的文件系统。我是docker的新手,我得到了一个表达式,所有docker映像可能都有类似的文件系统。也许这是我的假设。它应该取决于基础映像。对于上面的案例,基本映像是java:8-jdk-alpine。它可能是不同的东西

我有几个问题

  • 如何访问此容器
  • 我如何知道现有的基本映像内容,以便将来能够正确访问它
    我不认为bash安装在那里,而是尝试/bin/sh

    如果直接运行基本映像,则可以在基于它构建自己的映像之前进行测试

    docker run -it java:8-jdk-alpine /bin/sh
    

    似乎很有效

    谢谢,这很有效。因此,对于java:8-jdk-alpine,没有bash。所以我的2个问题是,我如何知道基础映像的现有内容,以便将来能够正确访问它?通常情况下,bash可以工作,否则请尝试sh。否则,您需要基础映像的Dockerfile。那么,我如何知道哪个映像有bash或没有bash?主要是我想知道的基础图像的内容之前,我从我自己的形象之一。我怎么知道的?你必须像我一样尝试。直接运行基本映像即可。最后一个问题是所有基于某种Linux发行版的docker映像?