写Dockerfile的一个小坑

2024-05-10 17:48
文章标签 dockerfile 小坑

本文主要是介绍写Dockerfile的一个小坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面是是一个简单的Dockerfile。

FROM centos
ENV LANG en_US.UTF-8
ENV TZ Asia/ShanghaiCOPY softs/jdk1.8.0_161 /opt/RUN set -ex && \
rm /bin/sh && \
ln -sv /bin/bash /bin/sh && \
chmod -R +x /optENV JAVA_HOME /opt/jdk1.8.0_161
ENV CLASSPATH .:$JAVA_HOME/lib/tools.jar:/lib.dt.jar
ENV PATH $JAVA_HOME/bin:$PATH

基础镜像200M + JDK 100M。但总的镜像大小确实400+M,这个为啥呢?
其实这里有个小坑需要注意,就是Dockerfile的分层设计,我们都知道Dockerfile中每行语句都会生成一个新的Dockerfile分层,上一层变为只读(read only)。那么

chmod -R +x /opt

这行是一个递归的修改权限,他会将上面COPY的内容,复制到这层,并修改权限。所以,这里建议大家在COPY之前先将权限修改完成后,再拷贝进镜像。

这篇关于写Dockerfile的一个小坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/977126

相关文章

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

在Dockerfile中copy和add的区别及说明

《在Dockerfile中copy和add的区别及说明》COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或... 目录在dockerfile中,copy 和 add有什么区别?COPY 命令ADD 命令总结在Doc

前端 Dockerfile 及 Nginx 配置

🚀 需求:前端 Vue 项目,需要打包为 Docker 镜像,并通过外部 Nginx 访问到这个前端容器。 ⭐ 解决:使用 Nginx 作为 Docker 基础镜像,即使用 Nginx 代理前端静态资源。 Dockerfile Dockerfile 如下: #使用 nginx 最新版本作为基础镜像FROM harbor.xxx.com/enterprise/nginx:1.26-boo

【docker1】docker的下载安装、容器与docker、Dockerfile的写法

1 容器 1、容器1、什么是容器?用镜像启动的一个对外可以提供服务的进程即为容器。1、容器的本质是进程2、容器是由镜像创建的,跟镜像中保存的内容完全一致。3、容器与容器之间是完全隔离的(可以理解为国中之国)4、每一个容器都需要做的是尽量保持自己的体积足够的小。2、容器的生命周期容器之内必须至少有一个进程运行在前台。如果一个进程都没有的话,那么此容器就相当于完成了它的声明周期。3、容器的基本使用0

Docker数据卷和Dockerfile

1、什么是Docker数据卷 前言:         在下载的镜像中,我们不能够去改变它内部的一些配置,因为docker的镜像文件是已经配置好的,无法改变,我们只能改变镜像启动后的容器里面的内容,但是又因为,容器本来就是一个临时的,当容器停止了,那么我们内部的一些存储的数据也将会丢失,那么docker官方为了能够解决这个临时性的问题而产生了数据卷(volume)这个组件。

dockerfile部署fastapi项目

dockerfile部署fastapi项目 1、Dockerfile # 使用Python官方镜像作为基础镜像FROM python:3.8-slim# 更新apt-get源并安装依赖# RUN apt-get update -y && apt-get install -y git# 设置环境变量ENV PYTHONDONTWRITEBYTECODE 1ENV PYTHONUNBUFF

Docker —— Dockerfile 详解

制作Docker image 有两种方式:一是使用 Docker container,直接构建容器,再导出成 image 使用;二是使用 Dockerfile,将所有动作写在文件中,再 build 成 image。Dockerfile 的方式非常灵活,推荐使用。 本次实验环境:腾讯云服务器 CentOS 6.7 x86_64 一.Dockerfile 基本结构 一般的,Dockerfi

docker实战扩展三(dockerfile中run的详细用法)

RUN 是 Dockerfile 中的一个重要指令,用于在镜像构建过程中执行命令。它将在镜像构建过程中创建一个新的临时容器,执行指定的命令,并将执行结果提交到镜像层。每一个 RUN 指令都会创建一个新的镜像层。 RUN 指令的基本用法 Shell 形式 最常见的形式是 shell 形式,这种形式的 RUN 指令会在 /bin/sh -c 中运行。适用于大多数简单命令: RUN <comma

docker实战扩展四( Dockerfile 中,COPY . .详细讲解)

在 Dockerfile 中,COPY . . 是一个常用的指令,它的作用是将构建上下文中的所有文件复制到镜像中的指定目录。为了更好地理解这个指令,我们需要先了解两个概念:构建上下文和容器中的工作目录。 概念解释 构建上下文: 构建上下文是指在执行 docker build 命令时,Docker CLI 将指定目录的内容(包括子目录和文件)发送给 Docker 守护进程。构建上下文的路径通常

java ee学习的小坑

程序运行出现的这一大堆错误让我抓狂,通过百度note毫无收获,我以为是我的tomcat版本太高,尝试了想用自带的服务器,但是没找到,看了错误,大概是说第一行,然后试着百度了message,结果就碰到了跟我一样的情况,很简单,就是自带的页面有好多语句,但是,我不需要那么多,所以呢,就删除了一些,但是删除之后,紧挨着了,没有空格,就引发了上面的错误。改正之后,程序运行就OK了 改正前:<%@ p