首先,如果我的问题听起来太简单或者太傻,对不起。我是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
有几件事情你应该改正,第一件事是 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
请记住,docker args的顺序很重要:你写的是 docker run b24b37614e1a -it
这与
docker run -it b24b37614e1a
希望它能解决你的问题:)