网站首页 > 博客文章 正文
什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
例如dockerfile的文件内容如下:
FROM xx
RUN xx
FROM和RUN指令的作用:
- shell格式RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。
- exec格式RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline 注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。如果多个shell命令,可以使用:以&&符号连接命令,这样执行后,只会创建 1 层镜像。
其他的一些常见命令:
MAINTAINER
用来写备注信息,例如作者、日期等。
COPY
复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD
复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)
WORKDIR
指定工作目录,假如路径不存在会创建路径
ENV
设置环境变量
EXPOSE
暴露容器端口到宿主机
ENTRYPOINT
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
容器启动后执行默认的命令或者参数,允许被修改
制作dockerfile的过程
1.创建Dockerfile文件
在任意目录下创建新建一个名为Dockerfile文件,并在文件内添加以下内容:
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /tmp/1.txt
2.执行Dockerfile文件
在该Dockerfile文件同级目录中执行如下命令:
docker build -t nginx:v3 .
最后一个点指的是上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包
制作dockerfile的好处
一键构建服务器所需要的环境,达到快速部署项目的目的,例如使用Dockerfile製作一个jdk8的服务镜像环境:
FROM centos:7
#指明该镜像的作者和电子邮箱
MAINTAINER xxx "xxx@qq.com"
#在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/docker
#一个复制命令,把jdk安装文件复制到镜像中,语法 ADD SRC DEST ,ADD命令具有自动解压功能
ADD jdk-8u201-linux-x64.tar.gz /usr/local/docker
#配置环境变量,此处目录为tar.gz包解压后的名称,需提前解压知晓:
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_201
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#设置启动命令
CMD ["java","-version"]
猜你喜欢
- 2024-09-23 docker部署linux web运行环境笔记
- 2024-09-23 不可错过的Docker完整笔记(dockerhib)
- 2024-09-23 docker中执行指定脚本(docker 下运行springboot应用)
- 2024-09-23 Java项目要不要部署在Docker里?(java部署工具)
- 2024-09-23 Java Dockerfile 最佳实践分享(java docker部署)
- 2024-09-23 「这些都不知道你就是个弟弟」Docker常用命令
- 2024-09-23 Spring Cloud 第十一篇:docker部署spring cloud项目
- 2024-09-23 用 Docker、Gradle 来构建、运行、发布一个 Spring Boot 应用
- 2024-09-23 功能问题:如何用Docker部署一个后端项目?
- 2024-09-23 Docker系列三部署Tomcat(docker部署tomcat项目)
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)