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中nacos无法访问的问题解决

    docker中nacos无法访问的问题解决

    本文主要介绍了docker中nacos无法访问的问题解决,可能是检查端口映射设置、防火墙设置以及Nacos容器的运行状态等方面,本文就来实现docker中nacos无法访问的问题解决,感兴趣的可以了解一下
    2024-02-02
  • Docker常用命令总结大全(推荐!)

    Docker常用命令总结大全(推荐!)

    Dokcer里面有很多命令,全部的可以参考官方Reference文档,命令太多我们只需要掌握部分命令即可,这篇文章主要给大家介绍了关于Docker常用命令总结大全的相关资料,需要的朋友可以参考下
    2024-01-01
  • docker run 运行容器自动结束的解决

    docker run 运行容器自动结束的解决

    这篇文章主要介绍了docker run 运行容器自动结束的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • IDEA 通过docker插件发布springboot项目的详细教程

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

    这篇文章主要介绍了IDEA 通过docker插件发布springboot项目的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 使用docker部署java项目运行环境的实现步骤

    使用docker部署java项目运行环境的实现步骤

    本文主要介绍了使用docker部署java项目运行环境的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Docker单机部署Doris超详细图文教程

    Docker单机部署Doris超详细图文教程

    Apache Doris是一款基于MPP架构的分析型数据库,由百度大数据部研发,支持亚秒级响应时间的实时数据分析,本文旨在为学习Doris的同学提供一个快速的操作指引,以便更高效地挖掘数据背后的价值,对docker 部署Doris 数据库使用感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • 利用Volume在主机和Docker容器文件传输的方法

    利用Volume在主机和Docker容器文件传输的方法

    这篇文章主要介绍了利用Volume在主机和Docker容器文件传输的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 简述Docker 安装influxDB分布式时间序列数据库及相关操作

    简述Docker 安装influxDB分布式时间序列数据库及相关操作

    influxDB是一个分布式时间序列数据库。这篇文章主要介绍了Docker 安装influxDB分布式时间序列数据库及相关操作,需要的朋友可以参考下
    2019-10-10
  • 解决docker日志挂载的问题

    解决docker日志挂载的问题

    这篇文章主要介绍了解决docker日志挂载的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 使用docker极简打包java.jar镜像并启动的操作步骤

    使用docker极简打包java.jar镜像并启动的操作步骤

    这篇文章主要介绍了用docker极简打包java.jar镜像并启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08

最新评论