背景: 運行一個容器 發現缺少了環境變量 又不想去重新run一個容器 這樣的場景可以通過修改文件的方式實現
示例:
1.運行一個centos鏡像
[root@localhost ~]# docker run -it -d --name centos centos
37c852b70138b2800ec2063e0e8b88f731cb84dc3dfe44274e5baf31f2e5578d
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37c852b70138 centos "/bin/bash" 3 seconds ago Up 2 seconds centos
運行docker inspect centos
命令去查看有哪些環境變量,會找到這樣的一個配置,這個就是容器運行時的環境變量,現在我們去修改這個環境變量
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
2.停止docker服務
systemctl stop docker
3.修改配置文件
找到容器的配置文件/var/lib/docker/containers/容器id/config.v2.json,
找到"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"]
,
把需要添加的環境變量添加上去,"Env":["TZ=Asia/Shanghai","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"]
這里我添加了個"TZ=Asia/Shanghai"環境變量 如果需要添加多個環境變量,以逗號隔開就行
4.啟動docker服務
systemctl start docker
5.啟動容器
docker start centos
6.查看環境變量是否修改成功
docker inspect centos
"Env": [
"TZ=Asia/Shanghai",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
命令會有以上這樣的輸出,表示我們已經把環境變量修改完成了!!!