Win10系统下Docker容器测试问题笔记及注意事项
Posted 鮀城小帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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参数失效。
以上是关于Win10系统下Docker容器测试问题笔记及注意事项的主要内容,如果未能解决你的问题,请参考以下文章
用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(下)-搭建Hadoop集群