docker环境变量配置不生效/ect/profile的解决方法

 更新时间:2023年08月23日 15:29:12   作者:彭世瑜  
docker在使用过程中,有时候自定义容器实例中的某些配置文件,本文主要介绍了docker环境变量配置不生效/ect/profile的解决方法,感兴趣的可以了解一下

问题描述

docker启动的centos,每次进入终端,配置在/ect/profile 的环境变量没有生效

#  运行centos 获取systemctl权限
docker run \
--privileged \
-itd \
--name centos7 \
-p 8082:8080 \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
centos:centos7 /usr/sbin/init
# 进入终端
docker exec -it centos7 /bin/bash

问题分析

通过查看几个用户环境变量文件,发现有如下调用链

~/.bash_profile
~/.bashrc
/etc/bashrc
/etc/profile.d/*.sh

唯独漏了配置文件 /etc/profile

# 查看 ~/.bash_profile
$ more ~/.bash_profile

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi


# 查看 ~/.bashrc
$ more ~/.bashrc

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi


# 查看 /etc/bashrc
$ more /etc/bashrc

# /etc/bashrc
for i in /etc/profile.d/*.sh; do
    if [ -r "$i" ]; then
        if [ "$PS1" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done


# 查看 /etc/profile
$ more /etc/profile

# /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

问题解决

所以,我们可以将环境放到文件夹/etc/profile.d 中

无论哪种方式都会执行该文件夹中的shell脚本

添加环境变量

# 新建环境变量文件
vim /etc/profile.d/env.sh
# /etc/profile.d/env.sh
# jdk
JAVA_HOME=/usr/local/jdk1.8.0_351
PATH=$JAVA_HOME/bin:$PATH

再次启动,就可以生效了

其实,几个配置文件也都有提示

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

大致意思就说,用户环境变量放在文件夹/etc/profile.d/ 中是比较好的方式

到此这篇关于docker环境变量配置不生效/ect/profile的解决方法的文章就介绍到这了,更多相关docker环境变量配置不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker 设置windows存储路径的操作

    docker 设置windows存储路径的操作

    这篇文章主要介绍了docker 设置windows存储路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用Dockerfile实现容器内部服务随容器自启动的方法

    使用Dockerfile实现容器内部服务随容器自启动的方法

    这篇文章主要介绍了使用Dockerfile实现容器内部服务随容器自启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • docker: invalid reference format.问题

    docker: invalid reference format.问题

    这篇文章主要介绍了docker: invalid reference format.问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • IDEA 通过docker插件发布springboot项目的详细教程

    IDEA 通过docker插件发布springboot项目的详细教程

    这篇文章主要介绍了IDEA 通过docker插件发布springboot项目的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 详解docker-compose安装minio

    详解docker-compose安装minio

    这篇文章主要介绍了docker-compose安装minio的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • docker的常用命令详解

    docker的常用命令详解

    这篇文章主要列举了docker的常用命令,本文给大家介绍的非常详细,有需要的朋友可以参考阅读
    2023-04-04
  • Docker Push Skipped foreign layer 的错误问题及解决方案

    Docker Push Skipped foreign layer 的错误问题及解决方案

    当Docker推送基于Windows镜像到私有仓库的时候会遇到Skipped foreign layer的问题,这篇文章主要介绍了Docker Push Skipped foreign layer 的错误问题及解决方案,需要的朋友可以参考下
    2022-05-05
  • dockerfile健康检查HEALTHCHECK的命令学习

    dockerfile健康检查HEALTHCHECK的命令学习

    HEALTHCHECK 指令告诉 Docker 如何测试一个容器,以检查它是否仍在工作,本文主要介绍了dockerfile健康检查HEALTHCHECK的命令学习,感兴趣的可以了解一下
    2024-01-01
  • dockerfile的使用及使用dockerfile部署springboot项目的过程

    dockerfile的使用及使用dockerfile部署springboot项目的过程

    Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本,这篇文章主要介绍了dockerfile的使用,使用dockerfile部署springboot项目,需要的朋友可以参考下
    2023-04-04
  • 如何找到Docker容器(redis)中的持久化文件

    如何找到Docker容器(redis)中的持久化文件

    要查看Docker容器的dump.rdb和appendonly.aof文件(如果启用了AOF持久化)的位置,我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置,本文给大家介绍如何找到Docker容器(redis)中的持久化文件,感兴趣的朋友一起看看吧
    2023-10-10

最新评论