Docker启动容器出现No Such File Or Directory排查

2023-03-22 20:09:51 浏览数 (1)

dockerfile如下

代码语言:shell复制
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创建容器后 启动失败

分享一下排查思路

  1. 由于容器秒退 所以docker exec 比较难操作
  2. dockerfileCMD改为如下项
代码语言:txt复制
```
代码语言:txt复制
CMD ["wget", "www.google.com"]
代码语言:txt复制
```
  1. 使用国内网络的特性使容器在相当一段时间内持续运行, 这样就不会出现容器秒退的情况了
  2. docker exec -it test-backend /bin/sh
  3. 进入容器后查看对应目录/文件是否存在
  4. 手动执行之前dockerfile里的CMD, /test-backend pro, 然后报错了 no such file ....
  5. 在宿主机是可以运行这个程序的, 所以初步判断为docker基础镜像的问题, 将基础镜像更换为centos:7后重新docker builddocker run
  6. 网上有资料说alpine这个镜像虽然小, 但存在很多问题, 比如shell环境不完整等等
  7. 问题解决

谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于shell环境不完整, 表现为可执行文件执行不了 ssl等基础库不存在, 无法访问https服务 常用的时区设置方式失效

0 人点赞