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