前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟我一起学docker(七)--Dockerfile

跟我一起学docker(七)--Dockerfile

作者头像
IT架构圈
发布2018-05-31 15:03:44
6060
发布2018-05-31 15:03:44
举报
文章被收录于专栏:IT架构圈IT架构圈

1.利用Dockerfile创建镜像

什么是Dockerfile?

定义:Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义镜像。

基本结构:

Dockerfile由一行行的命令语句组成。并且支持以#开头的注释行。一般Dockerfile分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时的指令。

Dockerfile示例:

#This is a Dockerfile

#Author:liming

#第一行必须指定基础镜像

FROM ubuntu

#维护者信息

MAINTAINER <394498036@qq.com>

#镜像的操作指令

RUN apt-get update

RUN apt-getinstall -y nginx

RUN echo “\ndaemonoff:” >> /etc/nginx/nginx.conf

#容器启动时的指令

CMD /usr/sbin/nginx

操作一下:

首先创建目录testDockerfile并进入

vi Dockerfile

创建命令:

docker build –t =“<镜像名称>”.

注意:执行此命令要和Dockerfile在同级目录,文件名称必须为Dockerfile。命令后面的”.”表示在当前目录下执行。

2.Dockerfile指令集

1 FROM

格式为 FROM <image>或<image>:<tag>。

第一条指令必须为FROM指令,用于指定基础镜像。

2 MAINTAINER

格式为 MAINTAINER <name>,指定维护者信息。

3 RUN

格式为 RUN <command>,会在shell终端运行命令。

4 EXPOSE

格式为 EXPOSE <port> [<port> ...],容器需要暴露的端口号。镜像启动可以通过 –P 或 -p 进行端口映射的绑定。

5 ENV

格式为 ENV <key> <value>。

指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量。

6 ADD

格式为 ADD <src> <dest>。

该命令将复制指定的<src>到容器中的<dest>。其中<src>可以是Dockerfile所在目录的一个相对路径;也可以是url,还可以是tar文件(自动解压)。

7 VOLUME

格式为 VOLUME [path]。

创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据。

8 USER

格式为 USER <username>。

指定运行容器时的用户名,后续的RUN也会指定该用户。

9 WORKDIR

格式为 WORKDIR <work_path>。

指定工作空间,运行完WORKDIR后,后续执行的RUN、CMD、ENTRYPOINT都会在此目录下执行。

10 COPY

格式为 COPY <src> <dest>。

复制本地主机的<src>到容器中的<dest>,目标路径不存在时,会自动创建。

当使用本地目录为源目录时,推荐使用COPY。

11 CMD

推荐格式为 CMD [“executable”,”param1”,”param2”] 。

作为ENTRYPOINT的默认参数为 CMD[”param1”,”param2”]。

指定容器的启动命令,每个Dockerfile只能有一条CMD命令,如果指定多条,只有最后一条会执行。

用户启动容器时指定运行命令,会覆盖掉Dockerfile中的CMD命令。

12 ENTRYPOINT

格式为 ENTRYPOINT [“executable”,”param1”,”param2”]。

配置容器启动后的命令,可被docker run提供的--entrypoint参数覆盖。

每个Dockerfile只能有一条ENTRYPOINT命令,如果指定多条,只有最后一条会执行。

3.容器内安装工具的方法

4.Dockerfile最佳实践

1 错误定位

每个Dockerfile的指令可以生成新的一层镜像,如果通过Dockerfile创建镜像出错,可以根据出错所在步骤的上一层启动容器,然后手工执行出错层的命令,以达到调试目的。

2 好的使用习惯

http://dockone.io/article/131

http://dockone.io/article/132

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档