最近使用Docker来部署一个项目,但是启动后遇到了一些问题,这里记录一下。
问题描述:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown.
错误分析:
Error response from daemon: OCI runtime create failed
这个错误一般是因为Docker在创建容器时,使用了容器运行时(OCI runtime),但是运行时创建容器失败了。
starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory
这个错误的具体原因在于,启动Docker容器后,命令行输入/bin/bash时,系统找不到这个可执行文件。
解决方案:
在Dockerfile中明确指定依赖包,保证容器中有必要的文件和依赖。
FROM centos:latest
#安装必要的依赖包
RUN yum install -y wget curl tar gzip zip unzip bzip2 openssl openssl-devel
#设置环境变量
ENV JAVA_HOME /usr/local/java
ENV PATH ${PATH}:${JAVA_HOME}/bin
#安装Java
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz" \
-O /tmp/jdk-8u121-linux-x64.tar.gz && \
tar -xzvf /tmp/jdk-8u121-linux-x64.tar.gz -C /usr/local/ && \
mv /usr/local/jdk1.8.0_121 ${JAVA_HOME} && \
rm -rf /tmp/*
#设置容器启动命令
CMD ["/bin/bash"]
以上是解决Docker启动后报错的一种办法,希望对大家有所帮助。