
2、其次在使用docker云边协同下发程序服务时,默认使用nvidiagpu。
3、穗世最后挂载之后,修改容器内前族凳的目录也会修改容器外的目录。
不推荐更改运行中的容器配置,容器本身是无状态的,当然也可以通过进哪者入容器内部的方式进行更改:dockerexec-it这样的更改是无法持久化保李乎薯存的,当容器重启后,更改就丢失顷谨了,正确的做法是将需要持久化保存的数据放在挂载的存储卷中,当配置需要改变时直接删除重建。1、程序需要前台运行程序必须前台执行,如果是java进程的话 不要有nohup 或者使用service的方式进行后台运行
否则可能会出现频繁启动应用的问题
原因就是docker只能管理运行中的镜像的一个进程(所以没有特殊需要不要一个镜像执行后出现两个进行的现象,尽量使用k8s的闹慧隐pod来解决)
2、日志要前台打印
日志直接console前台输碧咐出即可,docker会自动收集stdout输出的日志。不要存在打两份日志的设置,比如一份file,一份console等。
3、配置文件最好放在镜像内或远程可读取,非必要不要进行卷挂载目录进行读取
有些程序的配置文件是外置的,运行包和配置文件没有在一个执行包中。
如果有以上情况可以将配置文件和运行包都包含在镜像当中。
如果有些配置文件需要在不同的环境下做出修改或更换,就需要对应用程序进行分别打镜像或者改造一下程序,使其只是远程获取配置文件。分别打镜像不太符合整个发布流程,因为分别打镜像包中间可能会有差异,造成生产和开发测试不同。
还有一种方法就是使用k8s的configmap的服务来解决对应读取文件的问题。
4、数据卷的使用
每个容器运行之后不管你有没有显示的指定创建数据卷,都会有一个临时卷的存在,来存储一些临时生成的文件
这些临时文件会随着容器的生命周期而变化
如果你直接指定创建了数据卷,一定要创建在共享存储里面
否则会出现容器漂移之后读不到数据的情况
这种服务就叫做“有状态”的服务,一般我们的服务要做到“无状态”的
如果你的服务是有状态的,可以借助k8s的statuefulset来实现,包括启动顺序和给服务编号等 *** 作。
5、网络相关的注意事项(不要有创建网络相关的 *** 作)
(我们几乎用不到)
要让docker内服务识别正确的网卡
6、dockerfile
这里我定义了一个springboot微服务对应的dockerfile文件用来打镜像包,不管你现在用什么方式最后本质上都是使用 dockerfile来打镜液厅像的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)