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
创建容器后 启动失败
分享一下排查思路
- 由于容器秒退 所以
docker exec
比较难操作 - 将
dockerfile
的CMD
改为如下项
```
代码语言:txt复制CMD ["wget", "www.google.com"]
代码语言:txt复制```
- 使用国内网络的特性使容器在相当一段时间内持续运行, 这样就不会出现容器秒退的情况了
docker exec -it test-backend /bin/sh
- 进入容器后查看对应目录/文件是否存在
- 手动执行之前
dockerfile
里的CMD
,/test-backend pro
, 然后报错了 no such file .... - 在宿主机是可以运行这个程序的, 所以初步判断为docker基础镜像的问题, 将基础镜像更换为
centos:7
后重新docker build
和docker run
- 网上有资料说
alpine
这个镜像虽然小, 但存在很多问题, 比如shell环境不完整等等 - 问题解决
谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于shell环境不完整, 表现为可执行文件执行不了 ssl等基础库不存在, 无法访问https服务 常用的时区设置方式失效