dockerfile入门
文章目录
- @[toc]
- 使用
- 常用标签
- FROM
- RUN
- CMD
- ENTRYPOINT
- VOLUME
- 注意
使用
docker build -t 镜像名称[:镜像标签] -f Dockerfile所在目录 .例如 docker build -t myapp . 那么将会根据当前路径里的Dockerfile构建一个名为myapp的镜像;
注意,-f才是指定dockerfile路径,后面的点是镜像构建上下文
常用标签
FROM
FROM:定制的镜像都是基于 FROM 的镜像
RUN
run在docker build时执行,cmd在docker run时执行
RUN有两种形式:
- RUN (如同执行shell命令 - /bin/sh -c)
- RUN [“executable”, “param1”, “param2”] (exec形式)
exec形式被解析为JSON数组,这意味着必须使用双引号(“),而不是单引号(’)
CMD
指定启动容器后,提供默认命令及参数,会被docker run 后面参数替换
dockerfile中可以有多条cmd命令,但只是最后一条有效
格式:
- CMD <shell 命令> (shell form)
- CMD ["<可执行文件或命令>","","",…] (exec form)
- CMD ["","",…] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
推荐使用第二种格式,执行过程比较明确。
第一种格式实际上在运行的过程中也会自动转换成第二种格式运行,但这样docker会在指定的命令前加 /bin/sh -c 执行,可能会出问题;
exec形式被解析为JSON数组,这意味着必须使用双引号(“),而不是单引号(’)
例如使用第2种格式
Dockerfile
FROM centos
CMD ["echo", "this is a echo test" , "this is a echo test"]构建
docker build -t mycentos .运行
docker run mycentos输出
this is a echo test this is a echo test
ENTRYPOINT
在Dockerfile中,只能有一个ENTRYPOINT指令,如果有多个ENTRYPOINT指令则以最后一个为准。
在Dockerfile中,ENTRYPOINT指令或CMD指令,至少必有其一。
Entrypoint指令用于设定容器启动时第一个运行的命令及其参数。
执行docker run如果带有其他命令参数,不会覆盖ENTRYPOINT指令,并且会被作为ENTRYPOINT指令的参数。
ENTRYPOINT ["executable", "param1", "param2"] // 这是 exec 模式的写法,注意需要使用双引号。
ENTRYPOINT command param1 param2 // 这是 shell 模式的写法。
CMD作为ENTRYPOINT的参数
FROM ubuntu
...
ENTRYPOINT ["echo"]
CMD ["defaultvalue"]构建
docker build -t mycentos .运行
docker run mycentos输出
defaultvalue
同理,docker run mycentos aaa会输出aaa,因为aaa会覆盖Dockerfile里的CMD命令
例子
FROM frolvlad/alpine-oraclejdk8
VOLUME /tmp
COPY ./xxx.jar app.jar
RUN sh -c "touch /app.jar"
EXPOSE 8088ENTRYPOINT ["java", "-jar", "app.jar"]
VOLUME
通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。
注意
通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
通过docker run没有指定-v命令(或者docker compose 中没有指定volume命令) docker会创建一个匿名的volume,与主机/var/lib/docker/容器id/_data目录对应。
- 例如,DockerFile中指定VOLUME /tmp,而docker run中没有指定-v命令,那么docker将自动把容器/tmp目录挂载到宿主机/var/lib/docker/容器id/_data目录下
docker run -v命令如果同时指定了宿主机目录和容器目录,那么Dockerfile volume命令或被覆盖
容器数据持久化,删除容器,映射的主机目录数据不会变
dockerfile入门相关推荐
- DockerFile 入门到精通
文章目录 一.DockerFile快速入门 1. DockerFile 解析 2. DockerFile编写规范 3. DockerFile指令 二.构建自己centos镜像 2.1. 制作Docke ...
- Dockerfile 入门看这篇就够了
在使用docker时,有很多像往容器中复制war包.修改容器配置之类的操作,很繁琐,配置失败或异常时就又是一遍重复的操作,这时候,就要用到这个脚本文件–Dockerfile 以下是我对Dockerfi ...
- Docker Review - dockerfile 入门篇
文章目录 Docker 镜像.容器 .Docker file 概述 Docker File文件格式 Docker File 解读 1.FROM 指定基础镜像 2.RUN 执行命令 3.COPY 复制文 ...
- DockerFile入门指南
第一发布地址:http://hphblog.cn/2019/04/07/DockerFile/ 简介 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 1:每 ...
- Docker : Docker使用DockerFile入门案例
1.美图 2.DockerFile如下 (base) lcc@lcc negix$ pwd /Users/lcc/soft/docker/negix (base) lcc@lcc negix$ cat ...
- Dockerfile入门教程
文章目录 1.Dockerfile介绍 2.Dockerfile的规则 2.1 格式 2.2 执行顺序 2.3 其他 3. 指令 3.1 FROM 3.2 MAINTAINER 3.3 USER 3. ...
- Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...
- Linux中Docker入门知识
Docker基础 1 Docker概述 我们开发的代码会接触到不同环境:开发环境.测试环境以及生产环境: 1.1 Docker概述 Docker 是一个开源的应用容器引擎 Docker 可以让开发者打 ...
- Linux中Docker入门知识基础
Linux中Docker入门知识docker基础 1 Docker概述 我们开发的代码会接触到不同环境:开发环境.测试环境以及生产环境: 1.1 Docker概述 Docker 是一个开源的应用容器引 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
最新文章
- 顺序表-元素逆置(首尾交换)
- CTC损失函数 Transformer用的
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
- VTK:字形2D用法实战
- 作业调度方案(codevs 1156)
- FastDFS集群部署
- saxparser_使用SaxParser和完整代码进行XML解析
- [python]删除列表中相同的元素
- mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份
- 画米老鼠_蔡康永都在买的画你也买得起,村上隆作品收藏大全
- Markdown编辑公式
- python的线程组怎么写_Python高级——多任务编程之线程
- hdoj_1711_Number Sequence
- WF的性能特征(一)
- 一道容易栽坑的有趣的面试题(关于js,定时器,闭包等)
- 第01课 OpenGL窗口(1)
- 解决键盘老是不消失实现delegate委托实例化过程
- task文件服务器无法反弹,手把手带你玩转NAS 篇二十一:小米Redmi AC2100路由器刷机padavan保姆级教程...
- NTP服务器的相关配置
- 敏捷转型中的敏态与稳态
热门文章
- java canvas画矩形,HTML5 编程之Canvas
- hive中groupby优化_工作中总结的关于hive的优化方案
- Java一套拳法刷掉n个遍历树的问题
- windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
- mysql 密码过期解决图例_MYSQL 密码过期解决办法
- 基于 Spark推荐 系统应用 现 状
- 使用大量数据提高算法性能的前提条件
- 智慧城轨信息技术架构及信息安全规范_会员信息 | 中国铁设:在深圳,我们打造智慧地铁的“最强大脑”...
- python图像边缘检测报告_python计算机视觉2:图像边缘检测
- Chapter 1 : MySQL体系结构和搜索引擎