首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Docker容器内使用sudo编辑环境文件

问无法在Docker容器内使用sudo编辑环境文件
EN

Stack Overflow用户
提问于 2020-04-15 16:41:45
回答 1查看 36关注 0票数 0

我有一个码头容器是建立在ubuntu:bionic上。在这个容器中,我想安装java并设置PATH和JAVA_HOME变量。下面是我是如何做到的:

Dockerfile

代码语言:javascript
复制
FROM ubuntu:bionic
USER root
RUN adduser --disabled-password kafka-ui
RUN apt-get update && apt-get install -y sudo git apt-utils
ADD /sudoers.txt /etc/sudoers
RUN chmod 440 /etc/sudoers
COPY entrypoint.sh /entrypoint.sh
RUN chmod 755 /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
USER kafka-ui

sudoers.txt

代码语言:javascript
复制
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL) NOPASSWD: ALL
%sudo   ALL=(ALL:ALL) ALL
kafka-ui ALL=(ALL) NOPASSWD: ALL

entrypoint.sh

代码语言:javascript
复制
#!/bin/bash

sudo apt-get upgrade -y
sudo apt-get update && sudo apt-get install -y openjdk-11-jdk git

sudo echo "JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/" >> /etc/environment
sudo echo "PATH=$PATH:$JAVA_HOME/bin" >> /etc/environment
source /etc/environment

在entrypoint.sh文件的第6行和第7行,我得到了/entrypoint.sh: line 6: /etc/environment: Permission denied,尽管我使用的是sudo。这里会有什么问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 17:56:23

为什么你不在Dockerfile中安装java?我的意思是这样做会在你每次启动容器的时候安装Java,你想这样吗?

如果这不是必需的,您可以在Dockerfile中安装java,然后使用

代码语言:javascript
复制
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
ENV PATH="$JAVA_HOME/bin:${PATH}"

如果这是不可接受的,请尝试通过猛击容器来“调试”,并手动执行这些命令

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61224639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档