duckerfile文件

在docker中创建镜像最常用的方式就是使用dockerfile。Dockerfile是一个Docker镜像的描述文件,Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何创建。
在这里插入图片描述
一个Dockerfile的实例如下:
在这里插入图片描述
由上可知,Dockerfile结构大致分为四个部分:
1、基础镜像信息
2、维护者信息
3、镜像操作指令
4、容器启动时执行指令

Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释。下面对常用指令做一些介绍

二、Dockerfile常用指令
以下是通俗解释全景图
在这里插入图片描述

2.1、FROM
指明构建的新镜像是来自于哪个基础镜像
例如:FROM centos:6.
2.2 MAINTAINER
指明镜像维护者及其联系方式
2.3 RUN
构建镜像时运行的Shell命令。
例如:
RUN [“yum”, “install”, “httpd”]
RUN yum install xx
又如,在使用微软官方ASP.NET Core Runtime镜像时往往会加上以下RUN命令,弥补无法在默认镜像喜爱使用Drawing相关接口的缺憾:
FROM microsoft/dotnet:2.2.1-aspnetcore-runtime RUN apt-get update
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev
RUN ln -s /usr/lib/libgdiplus.so /lib/x86_64-linux-gnu/libgdiplus.so 2.4
2.4、CMD
启动容器时执行的Shell命令
例如:
CMD ["-C", “/start.sh”]
CMD ["/usr/sbin/sshd", “-D”]
CMD /usr/sbin/sshd -D
2.5、EXPOSE
声明容器运行的服务端口
2.6 ENV
设置环境内变量
例如:
ENV MYSQL_ROOT_PASSWORD 123456
ENV JAVA_HOME /usr/local/jdk1.8.0_45
2.7 ADD
拷贝文件或目录到镜像中,例如:
ADD html.tar.gz /var/www/html
如果是URL或压缩包,会自动下载或自动解压
2.8、COPY
拷贝文件或目录到镜像中,用法同ADD,但不支持自动下载跟解压
2.9、ENTRYPOINT
启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且这些命令行参数会被当作参数传递给ENTRYPOINT指定的程序
例如:
ENTRYPOINT ["/bin/bash", “-C”, “/start.sh”]
ENTRYPOINT /bin/bash -C ‘/start.sh’
dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个会生效
2.10、volume
指定容器挂载点到宿主机自动生成的目录或其他容器
例如:
VOLUME ["/var/lib/mysql"]
一般不会在Dockerfile中用到,更常见的还是在docker run的时候指定-v数据卷
2.11、USER
为RUN、CMD和ENTRYPOINT执行Shell命令指定运行用户
2.12、WORKDIR
为RUN、CMD、ENTRYPOINT以及COPY和AND设置工作目录,例如:
WORKID /data
2.13、HEALTHCHECK
告诉Docker如何测试容器以检查它是否仍在工作,即健康检查,例如:
HEALTHCHECK --interval=5m --timeout=3s --retries=3 \ CMD curl -f 链接 || exit 1
参数说明:
–interval=DURATION(default:30s):每隔多长时间探测一次,默认30s
–timeout=DURATION(default:30s):服务相应超时时长,默认30s
–start-period=DURATION(default:0s):服务启动多久后开始探测,默认0s
–retries=N(default:3):认为检测失败几次为宕机,默认3次
返回值说明:
0:容器成功是健康的,随时可以使用
1:不健康的容器无法正常工作
2:保留不使用此退出代码
2.14、ARG
在构建镜像时,指定一些参数,例如
FROM centos:6 ARG user
#ARG user=root USER @user
这时,我们在docker build时可以带上自定义参数user了,如下所示:
docker build --build-arg user=edisonzhou Dockerfile .
三、综合Dockerfile案例
下面是一个Java Web应用的镜像Dockerfile,综合使用到了上述介绍中最常用的几个命令

在这里插入图片描述
有了Dockerfile,就可以创建镜像了:
docker build -t tomcat:v1 .
最后,可以通过以下命令创建容器:
docker run -itd --name=tomcate -p 8080:8080 \ -v /app/webapps/:/usr/local/apache-tomcat-8.0.46/webapps/ \ tomcat:v1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值