Dockerfile使用教程
一、什么是Dockerfile
Dockerfile是创建自定义Docker镜像的描述文件,我们可以在Dockerfile中写出一条条指令来控制镜像需要执行什么操作,下面具体讲讲Dockerfile中的指令。
二、Dockerfile四大功能分区
1. 基础镜像
声明自定义镜像的基础镜像
FROM centos
2. 描述信息
此处可以声明镜像的负责人、版本、构建时间、描述等一系列信息,此处可以声明任何信息
LABEL maintainer=tingtiandadi@360.cn LABEL version="1.0" LABEL date="2020/03/08" LABEL description="RPM软件包制作"
3. 安装镜像执行指令
3.1 USER
执行Dockerfile中shell指令时指定的用户,包括:RUN、CMD、ENTRYPOINT
USER <user>[:<usergroup>] USER root
3.2 EXPOSE
指定容器运行时的服务端口
EXPOSE 80 443
3.3 WORKDIR
为Dockerfile中执行的指令设置工作目录,包括:ADD、COPY、RUN、CMD、ENTRYPOINT
WORKDIR /root
3.4 ADD
拷贝文件/目录到镜像中
ADD <src>...<dest> ADD rpmbuild.tar.gz /root/ ADD https://xxx.com/rpmbuild.tar.gz /root/
3.5 COPY
拷贝文件/目录到镜像中,用法与ADD相同,但是不支持自动下载和解压
ADD /home/mysql_cron /etc/cron.d/
3.6 VOLUME
把主机的目录挂载到docker中,类似nfs文件共享,一般很少用,大多在docker run中用-v来进行挂载
VOLUME ["/usr/local/"]
3.7 ARG
在构建镜像时指定的参数
ARG user USER $user
只需要在docker build时带上user参数即可
docker build --build-arg user=root -f dockerfile_rpmbuild .
3.8 RUN
构建镜像时运行的指令
RUN ["yum", "install", "net-tools", "-y"] RUN yum install net-tools -y
3.9 ENV
设置当前系统内环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_231
3.10 HEALTHCHECK
检查容器是否在仍在工作
HEALTHCHECK --interval=5m --timeout=3s --retries=3 \ CMD curl -f http:/localhost/ || exit 1
- 选项说明:
--interval=DURATION (default: 30s):每隔多长时间探测一次,默认30秒
-- timeout= DURATION (default: 30s):服务响应超时时长,默认30秒
--start-period= DURATION (default: 0s):服务启动多久后开始探测,默认0秒
--retries=N (default: 3):认为检测失败几次为宕机,默认3次
- 返回值说明:
0:容器成功是健康的,随时可以使用
1:不健康的容器无法正常工作
2:保留不使用此退出代码
4. 容器启动执行指令
4.1 CMD方式
可以编辑多条,每条指令按顺序执行。
CMD ["-C", "/start.sh"] CMD ["/usr/sbin/sshd", "-D"] CMD /usr/sbin/sshd -D
4.2 ENTRYPOINT方式
同CMD类似,但这种方式执行的命令不会被docker run执行的参数所覆盖,同时docker run执行的参数会传到此方式执行的脚本中。
ENTRYPOINT [ "rpmbuild", "-bb" , "/root/rpmbuild/SPEC/mysql-install.spec"] ENTRYPOINT [ "dpkg", "-b", "mysql-install", "mysql-install.deb"]
重要提示:ENTRYPOINT可以有多行,但是执行时只有最后一行生效,切记!
三、Dockerfile实例
# 基础镜像 FROM centos # 描述信息 LABEL maintainer=tingtiandadi@360.cn LABEL version="1.0" LABEL date="2020/03/08" LABEL description="RPM软件包制作" # 安装镜像执行指令 WORKDIR /root USER root RUN rpm -ivh net-tools-2.0-0.51.20160912git.el8.x86_64.rpm RUN yum install rpm-build-4.14.2-25.el8.x86_64 -y # 启动容器执行指令 ENTRYPOINT [ "rpmbuild", "-bb", "rpmbuild/SPEC/*.spec"]

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker命令详解(二):docker build
创建自定义镜像,常用选项说明 docker build [OPTIONS] OPTIONS 描述 --build-arg=[] 设置镜像创建时的变量; --cpu-shares 设置 cpu 使用权重; --cpu-period 限制 CPU CFS周期; --cpu-quota 限制 CPU CFS配额; --cpuset-cpus 指定使用的CPU id; --cpuset-mems 指定使用的内存 id; --disable-content-trust 忽略校验,默认开启; -f 指定要使用的Dockerfile路径; --force-rm 设置镜像过程中删除中间容器; --isolation 使用容器隔离技术; --label=[] 设置镜像使用的元数据; -m 设置内存最大值; --memory-swap 设置Swap的最大值为内存+swap,"-1"表示不限swap; --no-cache 创建镜像的过程不使用缓存; --pull 尝试去更新镜像的新版本; --quiet, -q 安静模式,成功后只输出镜像 ID; --rm 设置镜像成功后删除中间容器; --shm-siz...
- 下一篇
【云栖号案例 | 金融】上海行列秩智能科技有限公司大数据处理平台
云栖号案例库:【点击查看更多上云案例】不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 公司介绍 行列秩以人工智能和计量金融为技术基础,致力构建消费金融的资产定价及评级体系,推动整个行业的资金资产融合进入计量时代。 行列秩专注于消费金融的资产定价。2019年3月成立以来,行列秩精耕信托,依托自身技术及风控模型能力,创新性地为信托机构的消费金融业务解决风控需求,成功地为各大信托机构降低了风险率,实现了价值最大化,迅速地赢得了业内的一致好评,陆续获评“2019年度信托智能风控引领机构”、“2019年金融科技领军品牌”、“2019年普惠金融智能风控创新奖”。 2020年3月,行列秩与东华软件落地科技合作项目,开启了行列秩发力银行消费金融的新征程,双方将在深耕信托消费金融的基础上,共同开展针对银行等金融机构的科技智能化创新合作,构建智能科技金融生态伙伴圈。 行列秩已经获得来自于云南国际信托等多家机构数千万投资。 行列秩的产品和服务覆盖消费金融业务全流程,核心产品和服务体系主打以“布尔数”、“布尔引擎”、“布尔中台”为代表的信用评估&决策平台系列产品以...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装