docker使用普通用户启动容器并挂载本地目录
1 、背景
一般
docker
镜像构建成功之后,使用镜像启动容器时默认使用的是root
权限,为了安全起见,需要将root
用户权限改为普通用户。
2、 环境
centos 7系统
3、编写Dockerfile文件
要点:需要在容器里创建用户并且指定用户
#基础镜像
FROM jdk:8-slim
#修改人信息
MAINTAINER hongcb@10086.com
#创建用户,-d表示用户目录,-m自动建立用户的登入目录,mcbadm用户名
RUN useradd -d /home/mcbadm -m mcbadm
#项目产生的日志文件在/opt目录下,为了用普通用户可以挂载到本地,需要修改日志权限
RUN chmod 777 -R /opt && \
chown mcbadm:mcbadm -R /opt
#指定用户
USER mcbadm
#复制jar文件到容器中(当前路径就是Dockerfile所在之处,所以这里用ROOT/XX)
ADD --chown=mcbadm inter-pre-file-0.0.1-SNAPSHOT.jar /home/mcbadm/app.jar
ADD --chown=mcbadm application.properties /home/mcbadm/application.properties
ADD --chown=mcbadm logback-spring.xml /home/mcbadm/logback-spring.xml
#设置语言
ENV LANG C.UTF-8
#指定容器内时间
ENV TZ=Asia/Shanghai
#指定JVM参数
ENV JAVA_OPTS="\
-server \
-Xms1024m \
-Xmx1024m"
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -Dspring.config.location=/home/mcbadm/application.properties -jar /home/mcbadm/app.jar
4、构建镜像
docker build -t file:1 .
5、运行容器
#-it交互模式 -d后台运行 --name 容器名字
#-v 本地路径:容器路径
docker run -it -d --name file1 -v /home/mcbadm:/opt/mcb/wjjzh/var/log file:1
6、检查
#查看容器日志
#docker logs 容器名
docker logs file11
#进入容器查看
[root@Ryan inter-pre-file]# docker exec -it file1 /bin/bash
[mcbadm@d1abc5e8fbf3 /]$ whoami
mcbadm