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服务
常用的时区设置方式失效
注意: 本文归作者所有, 未经作者允许, 不得转载. 若有谬误, 欢迎指出