背景: 运行一个容器 发现缺少了环境变量 又不想去重新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"
],
命令会有以上这样的输出,表示我们已经把环境变量修改完成了!!!