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容器测试问题笔记及注意事项的主要内容,如果未能解决你的问题,请参考以下文章

Mac系统下安装docker及基本使用

win10上docker的使用

用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(下)-搭建Hadoop集群

2021-07-10 docker 启动milvus失败

关于在docker中配置elasticsearch容器的方法

win10系统docker学习——docker安装