无法运行docker镜像

问题描述 投票:1回答:1

首先,如果我的问题听起来太简单或者太傻,对不起。我是docker的新手。我已经创建了我的docker镜像,并传递了几个jar文件,这些文件将在容器启动时立即运行。我想在容器启动时立即运行脚本 "service.sh "我成功地创建了图像,但当我运行容器时,它向我抛出这个错误。

C:\Program Files\Docker\Docker\resources\bin\docker.exe: 来自守护进程的错误响应。OCI运行时创建失败:container_linux.go:349:启动容器进程导致 "exec:\"-it\":在$PATH中找不到可执行文件":未知。

这是我用来运行我抓取的镜像的命令。

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

java spring-boot docker dockerfile alpine
1个回答
3
投票

有几件事情你应该改正,第一件事是 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_PORTmachine_IP:$HOST_PORT


2
投票

请记住,docker args的顺序很重要:你写的是 docker run b24b37614e1a -it 这与

docker run -it b24b37614e1a

希望它能解决你的问题:)

© www.soinside.com 2019 - 2024. All rights reserved.