创建ElasticSearch图像非根用户和图像大小问题

toiithl6  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(447)

编辑:已经使用默认的ElasticSearch图像,但是这个练习的目的是学习dockerfile的工作。这就是为什么我注意到我的图片比官方图片(742米)大得多(2.5克)
Docker /集装箱景观新手(到目前为止一直在使用流浪者)。
为了更好地理解dockerfile的工作原理,决定创建一个es图像(类似于我过去为一个流浪者盒子创建的图像)。
有人可以帮助审查docker文件,并回答以下遇到的问题。
不允许以root身份运行es,并且从/home/newuser运行它会产生以下错误。
我错过了什么?如何创建新用户/组来解决此问题。

newuser@9f5820d430eb:~$ elasticsearch
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
output:
[0.000s][error][logging] Error opening log file 'logs/gc.log': Permission denied
[0.001s][error][logging] Initialization of output 'file=logs/gc.log' using options 'filecount=32,filesize=64m' failed.
error:
Invalid -Xlog option '-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m', see error log for details.
Error: Could not create the Java Virtual Machine.

dockerfile正在安装jdk和es,但映像大小超过2gb。这可以减少吗。找到一种叫做多阶段图像的东西。我不知道该如何在我的档案里体现这个概念。
在vagrant provisions中,我更新了/etc/environment的路径。这应该为集装箱做吗?我不确定它是否有价值。
文件管理员-


# Base image stage 1

FROM ubuntu

# MAINTAINER demo@gmail.com

LABEL maintainer="demo@foo.com"

############################################ 

### Install openjava

############################################ 

# RUN apt-get update

ARG JAVA_HOME=/opt/java
ARG JDK_PACKAGE=openjdk-14.0.2_linux-x64_bin.tar.gz

# setup paths

ENV JAVA_HOME $JAVA_HOME

# Setup JAVA_HOME, this is useful for docker commandline

ENV PATH $PATH:$JAVA_HOME/bin

## write to environment file for all future sessions

# sudo /bin/sh -c 'echo JAVA_HOME="/opt/java/" >> /etc/environment'

# sudo /bin/sh -c '.  /etc/environment ; echo PATH="$JAVA_HOME/bin:$PATH" >> /etc/environment'

## download open java

# ADD https://download.java.net/java/GA/jdk14.0.2/205943a0976c4ed48cb16f1043c5c647/12/GPL/$JDK_PACKAGE /

# ADD $JDK_PACKAGE /

COPY $JDK_PACKAGE /

RUN mkdir -p $JAVA_HOME/ && \
    tar -zxf /$JDK_PACKAGE --strip-components 1  -C $JAVA_HOME  && \
    rm -f /$JDK_PACKAGE

############################################ 

### Install elastic search

############################################ 

ARG ES_HOME=/opt/elasticsearch
ARG ES_PACKAGE=elasticsearch-7.10.1-linux-x86_64.tar.gz

# setup paths

ENV ES_HOME $ES_HOME

# Setup ES_HOME, this is useful for docker commandline

ENV PATH $PATH:$ES_HOME/bin

## write to environment file for all future sessions

# sudo /bin/sh -c 'echo ES_HOME="/opt/elasticsearch/" >> /etc/environment'

# sudo /bin/sh -c '.  /etc/environment ; echo PATH="$ES_HOME/bin:$PATH" >> /etc/environment'

## download es

# ADD https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz  /

# ADD $JDK_PACKAGE /

COPY $ES_PACKAGE /

RUN mkdir -p $ES_HOME/  && \
    tar -zxf /$ES_PACKAGE --strip-components 1  -C $ES_HOME  && \
    rm -f /$ES_PACKAGE

# Mount elasticsearch.yml config

ADD config/elasticsearch.yml /elasticsearch/config/elasticsearch.yml

# ADD config/elasticsearch.yml /

############################################ 

### Others

############################################ 

# Expose ports

EXPOSE 9200
EXPOSE 9300

## give permission to entire elasticsearch setup directory

RUN chmod 755 -R $ES_HOME
RUN chmod 755 -R $JAVA_HOME
RUN chmod 755 -R /var/log

# add non root user

RUN useradd newuser --create-home --shell /bin/bash
RUN echo 'newuser:newpassword' | chpasswd
RUN adduser newuser sudo
USER newuser
WORKDIR /home/newuser

# Define default command.

# CMD ["elasticsearch"]
t3psigkw

t3psigkw1#

docker的概念是,你已经准备好了大量现成的图片!
你为什么要建自己的房子 Dockerfile 像elasticsearch这样的普通技术?
为什么不简单:

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.1

你已经准备好在本地运行图像了吗?
你可以在这里阅读更多关于使用docker运行elasticseach的信息。
顺便说一句,此图像大小约为774mb
编辑:
如果是为了学习,我可以推荐潜水,它可以分析烘焙的图像(比如 elasticsearch:7.10.1 并显示图像构建的每一步(换句话说 dockerfile 建立了这个图像)和它开始的基础图像。

相关问题