【dokcer&java】docker容器中用普通用户起服务

一、实验背景

一般docker容器默认使用的root权限做服务的启动,安全整改要求,服务的启动用户要为普通用户。

整改后,服务进程的所有者需为普通用户,不能为root。

 

二、实验环境

操作系统: CentOS7.5 Minimal

IP: 192.168.1.104

 

三、编写dockerfile,制作镜像

 

#  mkdir   /opt/abc

# cp  HelloWorldWeb-0.0.1-SNAPSHOT.jar  /opt/abc

# cd   /opt/abc

 

# vim  Dockerfile

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

FROM centos:7

RUN yum clean all && \

    yum -y install java && \

    useradd -m -d /home/test -u 2019 -U test

WORKDIR /home/test

USER test

ADD --chown=test  HelloWorldWeb-0.0.1-SNAPSHOT.jar /home/test/app.jar

CMD exec java -Djava.security.egd=file:/dev/./urandom -jar app.jar

EXPOSE 8080

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

 

【dokcer&java】docker容器中用普通用户起服务_第1张图片

# docker build -f Dockefile -t  test:v1  .

 

【dokcer&java】docker容器中用普通用户起服务_第2张图片

【dokcer&java】docker容器中用普通用户起服务_第3张图片

# docker images

【dokcer&java】docker容器中用普通用户起服务_第4张图片

四、用镜像启动容器测试

 

# docker run -it -d --name test -p 8080:8080 test:v1

# docker ps -a 

docker ps -a --no-trunc

# docker logs test

【dokcer&java】docker容器中用普通用户起服务_第5张图片

# ss  -tan 

 

【dokcer&java】docker容器中用普通用户起服务_第6张图片

# docker exec -it test bash

$ ps aux | grep java

【dokcer&java】docker容器中用普通用户起服务_第7张图片

从上可以看出,java进程的所有者为指定的test用户,而不是root了。

 

浏览器访问:http://192.168.1.104:8080

 

【dokcer&java】docker容器中用普通用户起服务_第8张图片

 

 

五、参考

 

Dockerfile语法大全

https://www.jianshu.com/p/e37225134adf

 

Dockerfile reference

https://docs.docker.com/engine/reference/builder

 

dockerfile指定jvm参数

https://segmentfault.com/a/1190000007271728

你可能感兴趣的:(docker)