DOCKER04_详解Dockerfile基本指令、FROM、LABEL、RUN、CMD、ENTRYPOINT、ARG、ENV、VOLUME、USER(七)

简介: ⑩. USER 指定运行容器时的用户名或UID⑩①. multi-stage builds 多阶段构建

⑩. USER 指定运行容器时的用户名或UID


# 这是我的第一个dockerfile镜像
FROM alpine
# 相当于给当前容器开一个用户,以后的命令可以用这个用户运行 有可能没有执行权限
# 容器中的ROOT虽然不是lunux宿主机的真实root,但是可以改掉这个镜像的所有
USER 1000:1000
# 不自动解压
# 以linux主机的用户为准,默认是root用户,如果我们不指定权限将复制失败
COPY --chown=1000:1000 *.txt /a.txt
# RUN 指令上下并没有上下文关系
RUN  ls -l


[root@i-id8g0yu9 ~]# docker build --no-cache -t dockerfileworkuser:v1 -f dockerfileUSER .
Sending build context to Docker daemon  2.473MB
Step 1/4 : FROM alpine
 ---> 6dbb9cc54074
Step 2/4 : USER 1000:1000
 ---> Running in 7d4fd2b2a54c
Removing intermediate container 7d4fd2b2a54c
 ---> 2561ad4ce2c2
Step 3/4 : COPY --chown=1000:1000 *.txt /a.txt
 ---> a21c8da0fb0c
Step 4/4 : RUN  ls -l
 ---> Running in c9cbef9eac65
total 12
-rw-r--r--    1 1000     1000             5 Apr 18 13:46 a.txt
drwxr-xr-x    2 root     root          4096 Apr 14 10:25 bin
drwxr-xr-x    5 root     root           340 Apr 18 14:22 dev
drwxr-xr-x    1 root     root            66 Apr 18 14:22 etc
drwxr-xr-x    2 root     root             6 Apr 14 10:25 home
drwxr-xr-x    7 root     root           247 Apr 14 10:25 lib
drwxr-xr-x    5 root     root            44 Apr 14 10:25 media
drwxr-xr-x    2 root     root             6 Apr 14 10:25 mnt
drwxr-xr-x    2 root     root             6 Apr 14 10:25 opt
dr-xr-xr-x  115 root     root             0 Apr 18 14:22 proc
drwx------    2 root     root             6 Apr 14 10:25 root
drwxr-xr-x    2 root     root             6 Apr 14 10:25 run
drwxr-xr-x    2 root     root          4096 Apr 14 10:25 sbin
drwxr-xr-x    2 root     root             6 Apr 14 10:25 srv
dr-xr-xr-x   13 root     root             0 Apr 18 12:58 sys
drwxrwxrwt    2 root     root             6 Apr 14 10:25 tmp
drwxr-xr-x    7 root     root            66 Apr 14 10:25 usr
drwxr-xr-x   12 root     root           137 Apr 14 10:25 var
Removing intermediate container c9cbef9eac65
 ---> db89e3d275a2
Successfully built db89e3d275a2
Successfully tagged dockerfileworkuser:v1
[root@i-id8g0yu9 ~]# 


⑩①. multi-stage builds 多阶段构建


# 最终版本
FROM maven:3.5.2-jdk-8-slim AS buildapp
WORKDIR /app
COPY src .
COPY pom.xml .
RUN mvn clean package
RUN cp target/*.jar app.jar
RUN ls -l
FROM openjdk:8u282-slim
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
LABEL maintainer="845195485@qq.com"
COPY --from=buildapp /app/app.jar /app.jar
# COPY demo-0.0.1-SNAPSHOT.jar /app.jar
EXPOSE 8080
# CMD ["--server.prot=8080"]
ENV JAVA_OPTS=""
ENV PARAMS=""
ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS -jar /app.jar $PARAMS" ]
相关文章
|
6天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
6天前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
31 3
|
22天前
|
Docker 容器
docker中使用Dockerfile自动创建数据卷
【10月更文挑战第12天】
15 5
|
1月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
33 4
|
5天前
|
关系型数据库 MySQL API
|
2天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
2天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
2天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
8天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
40 1
|
9天前
|
Docker 容器
docker 修改容器内的系统时间
【10月更文挑战第27天】docker 修改容器内的系统时间
165 2
下一篇
无影云桌面