Docker--使用Dockerfile创建镜像--RHEL7.2
2016-04-28 10:50
736 查看
Dockerfile是一个文本格式的配置文件,用于快速创建自定义的镜像。
Dockerfile由一行行命令组成,注释以#开头。
1. Dockerfile基本结构
一般新建一个空目录,在新建的空目录内部新建Dockerfile文件。
Dockerfile内容一般分为4部分: 基础镜像信息、维护者信息、镜像操作指令、容器启动时执行的命令。
Dockerfile书写举例:
#date :
#author:
#other
#此句必须是正文的第一句,表明使用的基础镜像, 可以使用多个FROM, 即使用多个镜像。
FROM centos:tag1
#描述作者和邮箱地址
MAINTAINER xiaoming <XXX@.163.com>
#操作指令,此处新建一个文件
RUN touch /a.txt
#启动容器后运行nginx服务
CMD /usr/sbin/nginx
2. 指令简介
1) FROM
第一条指令,指定基础镜像,可以写多行FROM, 即使用多个基础镜像
2) MAINTAINER
描述镜像提供者信息
3) RUN
指定运行的命令
4) CMD
容器启动后执行的命令
每个Dockerfile中只有一条CMD指令,指定多条时只会执行最后一条,如在docker run时指定了容器起来后执行的命令则Dockerfile内指定的CMD指令会被覆盖,不再执行。
CMD三种形式:
(1) CMD ['execcutable', "参数1", “参数2”] #推荐使用此种方式
(2) CMD command pam1 pam2 #用于需要交互式的应用
(4) CMD ['参数1', “参数2”] #提供给ENTRYPOINT的默认参数
5) EXPOSE
指定容器暴露的端口
6) ENV
设置环境变量,供后续指令使用
7) ADD
复制文件到容器中, 可以是宿主机文件,也可以指定URL
8) COPY
复制宿主机文件到容器
9) ENTRYPOINT
指定容器启动后执行的命令,不可悲docker run提供的指令覆盖,一个Dockfile中指定多个ENTRYPINT时之后最后一个被执行。
10) VOLUME
创建一个可以挂载宿主机或者指定容器目录的挂载点, 一般用于存放数据库和需要保持的数据。
11) USER
指定运行容器的用户,后续run默认使用的就是此处指定的用户,切换到管理员推荐使用gosu,不推荐su
12) WORKDIR
指定容器启动后的工作目录,后续的指令可以以此目录作为当前目录设置路径
13) ONBUILD
在image1中使用ONBUILD, 容器起来后不会执行ONBUILD指定的命令,以image1为父镜像的子镜像对应的容器启动时image1对应的ONBUILD指令才会执行。
扩展: Dockerfile内每条指令执行后都会生成新的镜像并提交。
Dockerfile由一行行命令组成,注释以#开头。
1. Dockerfile基本结构
一般新建一个空目录,在新建的空目录内部新建Dockerfile文件。
Dockerfile内容一般分为4部分: 基础镜像信息、维护者信息、镜像操作指令、容器启动时执行的命令。
Dockerfile书写举例:
#date :
#author:
#other
#此句必须是正文的第一句,表明使用的基础镜像, 可以使用多个FROM, 即使用多个镜像。
FROM centos:tag1
#描述作者和邮箱地址
MAINTAINER xiaoming <XXX@.163.com>
#操作指令,此处新建一个文件
RUN touch /a.txt
#启动容器后运行nginx服务
CMD /usr/sbin/nginx
2. 指令简介
1) FROM
第一条指令,指定基础镜像,可以写多行FROM, 即使用多个基础镜像
2) MAINTAINER
描述镜像提供者信息
3) RUN
指定运行的命令
4) CMD
容器启动后执行的命令
每个Dockerfile中只有一条CMD指令,指定多条时只会执行最后一条,如在docker run时指定了容器起来后执行的命令则Dockerfile内指定的CMD指令会被覆盖,不再执行。
CMD三种形式:
(1) CMD ['execcutable', "参数1", “参数2”] #推荐使用此种方式
(2) CMD command pam1 pam2 #用于需要交互式的应用
(4) CMD ['参数1', “参数2”] #提供给ENTRYPOINT的默认参数
5) EXPOSE
指定容器暴露的端口
6) ENV
设置环境变量,供后续指令使用
7) ADD
复制文件到容器中, 可以是宿主机文件,也可以指定URL
8) COPY
复制宿主机文件到容器
9) ENTRYPOINT
指定容器启动后执行的命令,不可悲docker run提供的指令覆盖,一个Dockfile中指定多个ENTRYPINT时之后最后一个被执行。
10) VOLUME
创建一个可以挂载宿主机或者指定容器目录的挂载点, 一般用于存放数据库和需要保持的数据。
11) USER
指定运行容器的用户,后续run默认使用的就是此处指定的用户,切换到管理员推荐使用gosu,不推荐su
12) WORKDIR
指定容器启动后的工作目录,后续的指令可以以此目录作为当前目录设置路径
13) ONBUILD
在image1中使用ONBUILD, 容器起来后不会执行ONBUILD指定的命令,以image1为父镜像的子镜像对应的容器启动时image1对应的ONBUILD指令才会执行。
扩展: Dockerfile内每条指令执行后都会生成新的镜像并提交。
相关文章推荐
- Docker计划将镜像迁移至Alpine Linux平台,简化容器运行环境
- 为Docker容器设置固定IP实现网络联通(1)——通过Pipework为Docker容器设置
- CentOS6.5 下安装Docker
- 自己学Docker:6.Docker的数据持久化之数据卷容器
- centos7安装docker并设置开机启动
- Docker网络基础配置--RHEL7.2
- 【云计算虚拟化】Docker的基本命令使用
- kubernetes调度详解
- Docker配置指南系列(三):Dockerfile(一)
- kubernetes1.2如何操作Docker
- 剖析Docker文件系统:Aufs与Devicemapper
- Docker基础技术:AUFS
- 从iso到docker image
- centos6.5上使用docker
- Docker--容器中数据管理--RHEL7.2
- namespaces之 User Namespace机制
- docker 报错Failed to start Docker Storage Setup. 的处理基本都是容器满了
- 巧用Docker镜像仓库Harbor部署私有Mirror服务
- 巧用Docker镜像仓库Harbor部署私有Mirror服务
- 阿里云安装docker的问题