【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

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



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


# docker images

四、用镜像启动容器测试


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

# docker ps -a 

docker ps -a --no-trunc

# docker logs test

# ss  -tan 


# docker exec -it test bash

$ ps aux | grep java

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


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




五、参考


Dockerfile语法大全

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


Dockerfile reference

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


dockerfile指定jvm参数

https://segmentfault.com/a/1190000007271728

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文记录生成自己的Docker镜像的两个例子。第一个是在一个SpringBoot工程基础上生成镜像,第二个是在普通...
    峡客阅读 2,816评论 0 0
  • 一、在Docker中安装环境(PHP、Nginx、MySQL、Redis、memcached、MongoDB) 1...
    SuperGu阅读 2,282评论 0 1
  • jHipster - 微服务搭建 CC_简书[https://www.jianshu.com/u/be0d56c4...
    quanjj阅读 848评论 0 2
  • 一缕仙草沉入瓯 两股清泉丛中游 莫谈来者比作酒 袅烟吹香心中留 从小就爱茶,古有文人墨客酌一壶老酒,而我喜欢与三两...
    死神炼魔阅读 183评论 5 5
  • //1002 写出这个数 (20)(20 分)//读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数...
    笔墨流年乱浮生阅读 243评论 0 0