Win10系统下Docker容器测试问题笔记及注意事项

1. docker容器时间与系统时间不一致相差8小时

​解决方案:把时区设置加入到Dockerfile中

ENV TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

2. 启动第三方程序包失败​

原因:

该程序包执行时需要读取对应的 “/lib” 目录下的 lib*. jar 包。默认在Win环境下安装该程序包并配置环境变量后,是直接读取安装目录下的 "/bin" 同级的 "/lib" 目录。

但 Linux对lib包的解析是在 /usr/lib目录下,并未能成功读取到该安装目录下的 "/lib" 包,导致在创建连接时启动第三方程序的初始化时失败。

解决方案:

(1) 方案一:添加环境变量后,Docker容器有可能能根据环境变量读取到 “第三方程序安装目录/lib" 目录下的 native.jar;

(2) 方案二:若方案一失败,有可能是环境变量错误,也可能是Docker容器缺少组件导致环境变量失效。此时,只能手动将第三方程序/lib目录下的文件拷贝到 /usr/lib路径下,让Linux系统加载到即可。

3.Docker 未启动​

问题:在windows10上调用:docker info 的时候,出现了这个错误。

解决方案:

应该是docker没有启动。可以打开Docker Desktop,然后等一会,试试能不能行。

说明:

目前提供的Docker容器SOP只适用于Win10,如果是Win11系统,那么该SOP安装可能会失败,导致Docker一直启动不起来。

4.Docker容器网络访问慢问题​

解决方案:

(1) 确认已配置好软件源,使用国内的加速源,比如阿里源,清华源,网易源等等

(2) 更新国内DNS,可以使网络访问时在DNS获得加速,比如在/etc/resolv.conf添加nameserver 223.5.5.5;也可以在容器运行时使用docker run命令的--dns选项进行更新,命令如下:

--dns=223.5.5.5

5.解决Docker容器中文乱码,修改Docker容器编码格式​

添加编码格式环境配置:

ENV LC_ALL=zh_CN.utf8 ENV LANG=zh_CN.utf8 ENV LANGUAGE=zh_CN.utf8 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

注意事项​​

1. DockerFile:COPY的使用​

该参数默认用于从本地路径拷贝(文件或文件夹)到镜像内,该命令在打镜像时生效。

​2. CMD与ENTRYPOINT​

CMD和ENTRYPOINT都可用于启动程序,当同时使用时,只有最后一个生效。

案例:在项目里配置了 tomcat_images使用ENTRYPOINT来启动tomcat,在server_image部署了基于tomcat启动的 springboot程序,使用ENTRYPOINT命令启动java -jar ** 。

上述两个images的镜像可以正常启动的。

当两者合并后,在DockerFile里配置两个ENTRYPOINT分别启动Tomcat和 jar 程序时,仅有一个ENTRYPOINT参数生效。

即使使用 CMD去启动Tomcat,使用ENTRYPOINT启动jar,依旧是无效的。

​3. RUN 启动 *.sh 脚本​

RUN可用于启动脚本,脚本中可以编写执行程序安装等逻辑,就必须添加while循环避免进程退出。

如果此时在RUN启动的 sh 脚本中添加启动 jar 程序逻辑,由于jar的启动会占据主进程,会导致DockerFile在 RUN 参数后面的 ENTRYPOINT参数失效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值