ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dockerfile

2020-03-08 10:41:01  阅读:153  来源: 互联网

标签:容器 CMD 指定 镜像 docker Dockerfile


构建镜像:dockerfile;
启动容器:docker run;
编排容器和启动服务:docker-compose。

Dockerfile结构大致分为四个部分:基础镜像信息;维护者信息;镜像操作指令;容器启动时执行指令。Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释。

FROM:指定基础镜像
指明构建的新镜像是来自于哪个基础镜像

MAINTAINER
指明镜像维护者及其联系方式(一般是邮箱地址),MAINTAINER不推荐使用,更推荐使用LABEL来指定镜像作者
  
RUN:执行命令
构建镜像时运行的Shell命令:
shell 格式:RUN <命令>
exec 格式:RUN [“可执行文件”, “参数1”, “参数2”] 。

CMD:容器启动命令。
启动容器时执行的Shell命令:
shell 格式:CMD <命令>
exec 格式:CMD [“可执行文件”, “参数1”, “参数2”…]

EXPOSE:暴露端口
声明容器运行的服务端口,EXPOSE <端口1> [<端口2>…]
EXPOSE :EXPOSE 仅仅是声明容器打算使用什么端口而已,并不会自动在宿主进行端口映射。
  
ENV:设置环境变量,其他指令可直接引用
设置环境内环境变量:

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...

**ADD:高级复制文件,拷贝文件或目录到镜像中
如果是URL或压缩包,会自动下载或自动解压。

COPY:复制文本,用法同ADD,不支持自动下载和解压
<源路径> 可以是多个、以及使用通配符,通配符规则满足Go的filepath.Match 规则,
<目标路径>使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。
COPY <源路径>… <目标路径>
COPY ["<源路径1>",… “<目标路径>”]

ENTRYPOINT:入口点。同CMD,指定容器启动程序及参数
通过–entrypoint 参数在运行时替换。
启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指定指定的程序。
Dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个会生效。

VOLUME:定义匿名卷
指定容器挂载点到宿主机自动生成的目录或其他容器。
一般不会在Dockerfile中用到,更常见的还是在docker run的时候指定-v数据卷。
VOLUME ["<路径1>", “<路径2>”…]
VOLUME <路径>

USER:指定当前用户
为RUN、CMD和ENTRYPOINT执行Shell命令指定运行用户:
USER [:]
USER [:]

WORKDIR:指定工作目录
为RUN、CMD、ENTRYPOINT以及COPY和AND设置工作目录:
WORKDIR /data
WORKDIR <工作目录路径>
两次run不在一个环境内,可以使用WORKDIR。

HEALTHCHECK:健康检查
告诉Docker如何测试容器以检查它是否仍在工作,即健康检查:
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:保留不使用此退出代码。

ARG:构建参数
与ENV不同的是,容器运行时不会存在这些环境变量。可以用 docker build --build-arg <参数名>=<值> 来覆盖。

总结:
有了Dockerfile,就可以创建镜像并创建容器:
docker build -t tomcat:v1 .
docker run -itd --name=tomcat -p 8080:8080 -v /app/webapps/:/usr/local/apache-tomcat-8.0.46/webapps/ tomcat:v1

标签:容器,CMD,指定,镜像,docker,Dockerfile
来源: https://blog.csdn.net/xc_gxf/article/details/104727999

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有