docker 修改容器env配置


  • 场景:修改zabbix数据库密码

  • zabbix容器构成:

    • 数据库:zabbix-mysql
    • server端:zabbix-server-mysql
    • web端:zabbix-web-nginx-mysql
  • 测试后结论:

    • 必须停止docker服务,不然修改容器配置会还原;
    • MySQL数据库的env仅在第一次启动容器生效,之后需要进入容器修改密码OR配置文件;
    • MySQL数据库进入容器只需修改root@%密码,zabbix用户会备zabbxi容器修改;
    • zabbix服务端和网页端只需要修改env配置即可,在docker重启后,会把env变量同步到容器内zabbix的配置文件zabbix-server.conf;
  • 以下为实操步骤,推荐打开两个终端

    • 一个操作;
    • 查看日志:docker logs -f -n 100 zabbix-server-mysql;

1. 停止docker

# docker ps -a 查看容器id

docker ps -a

# 关闭docker

systemctl stop docker

2. 修改容器配置文件

  • config.v2.json 配置

# 配置文件位置:/var/lib/docker/containers/容器ID/config.v2.json

# 容器ID 有点长,所以在容器关闭前记录下容器ID

# 修改,确保docker服务关闭!!!

vim config.v2.json

# 打开后不是标准json格式,先格式化!

:%!python -m json.tool

# 然后找Env键值对修改:

"Env": [

"MYSQL_DATABASE=zabbix",

"MYSQL_USER=zabbix",

"MYSQL_PASSWORD=dxzq711", ==》 这个密码会自动修改

"MYSQL_ROOT_PASSWORD=dxzq711", ==》 当zabbix容器拿到root密码,会修改zabbix用户密码

"TZ=Asia/Shanghai",

"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",

"GOSU_VERSION=1.12",

"MYSQL_MAJOR=5.7",

"MYSQL_VERSION=5.7.35-1debian10"

],

# zabbix-server-mysql 和 zabbix-web-nginx-mysql 对应修改上面两个密码
  • zabbix-mysql 数据库密码修改

# 进入数据库容器

docker exec -it zabbix-mysql bash

# 用原密码登录MySQL

mysql -uroot -p

# 修改密码,只需修改root即可

mysql -u root -p

set password for 'root'@'%' = password('dxzq711');

set password for 'root'@'localhost' = password('dxzq711');

flush privileges;

3. 重启docker

  • 重启docker
  • 网页验证: http://localhost:8080

systemctl start docker