Docker(五)如何构建Dockerfile
摘自
https://mp.weixin.qq.com/s/_hq9dPe6390htN8BTkoQeQ
一、Dockerfile的指令集
由于Dockerfile中所有的命令都是以下格式:INSTRUCTION argument,指令(INSTRUCTION)不分大小写,但是约定俗成是大写的。
1、FROM
FROM是用于制定基础的images,一般格式为FROM<images> or FROM<IMAGE>:<TAG> ,所以有的Dockerfile都用该以FROM开头,FROM命令指明Dockerfile所创建的镜像文件以什么镜像为基础,FROM以后的所有指令都会在FROM的基础上进行创建镜像。可以在同一个Dockerfile中多次使用FROM命令用于创建多个镜像。比如我们需要指定python2.7的基础镜像,可以像如下写法一样:
FROM python:2.7
2、MAINTAINER
MAINTAINER是用于指定镜像创建者和联系方式,一般格式为MAINTAINER<name>。这里我设置我的ID和邮箱
MAINTAINER AAA <AAA@ffff.com>
3、COPY
COPY是用于复制本地主机的<src>(为Dockerfile所在目录的相对路径)到容器中的<dest>。当使用本地目录为源目录时,推荐使用copy。一般格式为copy <src><dest>。例如我们要拷贝当前目录到容器中的/app目录下,我们可以这样操作
COPY . /app
4、WORKDIR
WORKDIR用于配合RUN,CMD,ENTRYPOINT命令设置当前工作路径。可以设置多次,如果是相对路径。一般格式为 WORKDIR/path/to/word/dir。
WORKDIR /app
5、RUN
RUN pip install -r requirements.txt
6、EXPOSE
EXPOSE命令用来指定对外开放的端口。一般格式为EXPOSE<PORT>,例如上面那个例子,开放5000端口:
EXPOSE 5000
7、ENTRYPOINT
ENTRYPOINT可以让你的容器表现得像一个可执行程序一样。一个Dockerfile中只能有一个ENTRYPOINT,如果有多个,则最后一个生效。格式有两种
- ENTRYPOINT["executable", "param1", "param2"]:推荐使用的exec形式
- ENTRYPOINT command param1 param2: shell形式
例如下面这个,我们要将python变成那个可执行的程序,我们可以这样取做:
ENTRYPOINT ["python"]
8、CMD
CMD命令用于启动容器时默认的执行命令,CMD命令可以包含可执行文件,也可以不包含可执行文件。不包含可执行文件的情况下就要用ENTRYPOINT指定一个,然后CMD命令参数就会作为ENTRYPOINT的参数。
CMD命令有三种格式:
- CMD["executable", "param1", "param2"]: 推荐使用的exec形式
- CMD["param1", "param2"]: 无可执行程序形式
- CMD command param1 param2: shell形式
一个Dockerfile中只能有一个CMD,如果有多个,则最后一个生效。而CMD的shell形式默认调用 /bin/sh -c执行命令。CMD命令会被Docker命令行传入的参数覆盖: docker run busybox /bin/ echo Hello Docker会把CMD里的命令覆盖。
例如我们要启动 /app,我们可以用如下命令实现:
CMD ["app.py"]
二、构建Dockerfile
我们大体已经把Dockerfile的写法讲述完毕,我们可以自己动手写一个例子:
FROM nginx MAINTAINER AAAA <AAAA@FFFF.com> RUN echo 'Hello World' > /usr/share/nginx/html/index.html
转载于:https://www.cnblogs.com/ylxn/p/10510492.html
Docker(五)如何构建Dockerfile相关推荐
- Docker最全总结,DockerFile,Docker编排容器,Docker镜像,Docker-compose构建
文章目录 Docker 简介 为什么使用docker: Docker引擎: Docker系统镜像: Docker容器: Docker仓库: ubuntu安装docker: ubuntu脚本自动安装: ...
- Docker 的数据管理(Dockerfile的概述和构建)
文章目录 1 Docker 的数据管理 1.1 数据卷 1.2 数据卷容器 2 端口映射(2:31) 3 容器互联(使用 centos 镜像) 4 Docker 镜像的创建 4.1 基于现有镜像创建 ...
- docker镜像的构建及Dockerfile的详解应用,镜像加速器,镜像优化
docker镜像的构建及dockerfile的祥解应用 1.镜像的构建 1.1创建一个Dockerfile 1.2构建镜像 1.3查看镜像的分层结构 1.4镜像的缓存特性 2.Dockerfile详解 ...
- 这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像
文章目录 构建nginxDockerfile镜像 构建DockerfileTomcat 构建Dockerfile MySQL镜像 构建nginxDockerfile镜像 这里的nginx软件包使用ng ...
- Docker 多阶级构建:Docker 下如何实现镜像多阶级构建?
通过前面课程的学习,我们知道 Docker 镜像是分层的,并且每一层镜像都会额外占用存储空间,一个 Docker 镜像层数越多,这个镜像占用的存储空间则会越多.镜像构建最重要的一个原则就是要保持镜像体 ...
- Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像
文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...
- docker 多阶段构建
多阶段构建 之前的做法 在 Docker 17.05 版本之前,我们构建 Docker 镜像时,通常会采用两种方式: 全部放入一个 Dockerfile 一种方式是将所有的构建过程编包含在一个 Doc ...
- 『中级篇』Docker Cloud自动构建 Docker image(55)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Docker Cloud自动构建 Docker image(55) 一步一步的接近下面这个图,来通过时间的方式git ...
- Docker多步构建更小的Java镜像
译者按: 最新版Docker将支持多步构建(Multi-stage build),这样使用单个Dockerfile就可以定义多个中间镜像用于构建,测试以及发布等多个步骤,并且有效减小最终镜像的大小. ...
最新文章
- php正则表达式判断url,判断url的正则表达式
- esp8266 防掉线方法_esp8266 smartconfig-智能配网分析和使用及注意事项
- mysql创建多实例,mysql 单服务器创建多实例
- C语言实现合并两个链表 含注释
- Java往前拼接,利用Java程序将字符串进行排序与拼接
- BZOJ5215[Lydsy2017省队十连测] 商店购物
- geotools将shp数据存入postgres
- 使用Roberts算子进行图像分割(Matlab自编程实现)
- VirtualBox基础使用教程
- 企业OA办公系统选型技巧实用指南
- 无法获得下列许可solidworks standard无效的(不一致的)使用许可号码(-8,544,0) solidworks2020 (亲测有效)
- ABAP 去重 delete adjacent duplicates
- cnn app for android phones,Freedom Apk Download for Android Phones / Tablets Latest Version
- 最近在读的一些文章-2019.04
- IntelliJ idea (最新版)激活方法
- C#实现万年历(农历、节气、节日、星座、属相、生肖、闰年等)
- ByteCTF2021安全范儿高校挑战赛线上Misc-《HearingNotBelieving》
- 如何在桌面或者开始菜单中创建快捷方式
- R 熵权法计算权重及综合得分
- 42岁女博士相亲,要求对方年薪三百万,主要为淘汰一类档次低男人