Docker启动容器出现No Such File Or Directory排查
2023-03-22 20:00:02 667
dockerfile如下
FROM alpine
ADD test-backend /test-backend
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
EXPOSE 7099
CMD ["./test-backend", "pro"]
使用docker run
创建容器后 启动失败
分享一下排查思路
- 由于容器秒退 所以docker exec 比较难操作
- 将dockerfile的CMD改为如下项CMD ["wget", "www.google.com"]
- 使用国内网络的特性使容器在相当一段时间内持续运行, 这样就不会出现容器秒退的情况了
- docker exec -it test-backend /bin/sh
- 进入容器后查看对应目录/文件是否存在
- 手动执行之前dockerfile里的CMD, /test-backend pro, 然后报错了 no such file ....
- 在宿主机是可以运行这个程序的, 所以初步判断为docker基础镜像的问题, 将基础镜像更换为centos:7后重新docker build 和 docker run
- 网上有资料说alpine这个镜像虽然小, 但存在很多问题, 比如shell环境不完整等等
- 问题解决
还可以使用docker cp
和docker export
命令, 复制和导出在容器退出的情况下都是可以使用的
谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于shell环境不完整, 表现为可执行文件执行不了ssl等基础库不存在, 无法访问https服务常用的时区设置方式失效