使docker容器配置修改永久生效

概述:

          首先我的zabbix server相关的组件全部是以docker容器方式部署。

          在批量添加zabbix主机的时候,突然发现前端提示我zabbix server is not running **** ,我意识到我的zabbix server挂了,然后我去抓docker日志,在日志中发现我遇到了zabbix server服务在容器里oom的问题,具体报错如下:

__zbx_mem_malloc(): out of memory ******

__zbx_mem_malloc(): please increase TrendCacheSize configuration parameter

          然后我docker inspect 2afef21d0549先确定了下是否是我本身在启动容器的时候对容器内部服务做了内存限制:(答案是我没有对容器服务内存做限制)。

解决办法:

          遇到这种问题只能去修改zabbix_server.conf去增大CacheSize与TrendCacheSize等控制内存参数的配置项,修改方法在上个博客Zabbix错误:zbx_mem_malloc(): out of memory的解决方法_心软且酷丶的博客-CSDN博客

已经说明,我这里把着这两项修改为:

TrendCacheSize=512M 

CacheSize=2G

        修改完之后需要重启此docker服务,但是一旦重启,你的配置就全部又会还原,那怎么办呢?

使用制作新镜像的方法来解决这种问题:(docker commit )

(1)原docker修改zabbix_server.conf

        先在原来的容器服务里修改zabbix_server.conf

        使用root用户交互方式进入原容器:

  docker exec -it --user=root 2afef21d0549 /bin/sh

        修改zabbix_server.conf配置文件:

vi /etc/zabbix/zabbix_server.conf

修改完毕后:wq!保存退出

(2)保存修改之后的容器commit为新镜像

        容器id要与原来保持一致

docker commit 2afef21d0549 zabbix/zabbix-server-mysql:latest

        此时docker images 看下镜像仓库是否已经生成新保存的镜像:

docker images

 (3)启动新镜像

        首先zabbix之前镜像里有link连接与其他服务相关连,但是新镜像对原来的docker的link配置是不会保存的,所以启动时候需要手动link

        带参数启动新镜像:

        -e 传入环境变量env

        --link 关联其他服务配置

        --name 以什么名称去启动

        -p 端口映射

docker run -d  -e ZBX_CACHESIZE=2G  -e ZBX_TRENDCACHESIZE=512M --name zabbix-server-mysql-new -p 10051:10051  --link zabbix-java-gateway --link mysql-server cc5743c69723

(4)验证修改的配置是否正常

docker inspect ​​2afef21d0549

        link配置正常

        新增env参数正常

         进入容器内部检查修改是否已经生效:

  docker exec -it --user=root 2afef21d0549 /bin/sh
cat /etc/zabbix/zabbix_server.conf | grep CacheSize

         很明显已经生效,

        再打印下此dokcer服务日志,并重复oom之前添加机器的操作,日志也已恢复正常。

 docker logs -f  2afef21d0549

写在最后:

          大功告成,我想以后遇到同类型的问题时候大家也能举一反三,以此种方式去永久保存修改配置之后的容器。

          当然还有类似通过volume挂载本地文件的方式去解决,我这里就不再赘述,基本都是依赖于制作新镜像的方式去做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值