首先,如果我的问题听起来太简单或愚蠢,我很抱歉。我是 jetty worker 的新手。 我已经创建了 docker 镜像并传递了几个 jar 文件,这些文件将在容器启动时立即运行。 我想在容器启动时立即运行脚本“serve.sh” 我成功地很好地创建了图像,但是当我运行容器时,它抛出了这个错误:
C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-it\": executable file not found in $PATH": unknown.
这是我用来运行我创建的图像的命令:
docker run b24b37614e1a -it
这是我的 Docker 文件:
FROM openjdk:8-jdk-alpine
EXPOSE 8080:8080
COPY apigateway-0.0.1-SNAPSHOT.jar apigateway.jar
COPY authservice-0.0.1-SNAPSHOT.jar authservice.jar
COPY institutionsservice-0.0.1-SNAPSHOT.jar institutionsservice.jar
COPY messagesservice-0.0.1-SNAPSHOT.jar messagesservice.jar
COPY postsservice-0.0.1-SNAPSHOT.jar postsservice.jar
COPY userservice-0.0.1-SNAPSHOT.jar userservice.jar
COPY serve.sh serve.sh
CMD [ "bash" "./serve.sh" ]
请问我做错了什么?我是 Docker 新手
最佳答案
有几件事您应该更正,第一个是 CMD
格式,应该是
CMD instruction has three forms:
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
CMD [ "/bin/bash" , "./serve.sh" ]
另一件事,当你执行docker run
时,说明是
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
这意味着所有选项都必须位于 IMAGE
之前,而在您的情况下,it
出现在 IMAGE
之后。
正确的命令应该是
docker run -it b24b37614e1a
顺便说一句,小问题,为什么要运行此应用程序的交互式容器。理想情况下,它应该是这样的
docker run -p $HOST_PORT:$APP_PORT b24b37614e1a
-p
=> 将容器的端口发布到主机
然后您可以访问您的应用程序localhost:$HOST_PORT
或machine_IP:$HOST_PORT
关于java - 无法运行docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62053800/