一、dockerfile格式
Dockerfile是一个包含用于组合映像的命令文本文档,可以使用在命令行中调用任何命令,Docker通过读取dockerfile中的指令自动生成映像。docker build命令用于从dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中的路径的dockerfile。
 
 
1. FROM :指定基于哪个基础镜像,必须作为第一个命令!
格式:FROM <image> 或者  FROM <image>:<tag>
比如
FROM centos
FROM centos:latest
 
2. MAINTAINER : 指定作者信息!
格式:  MAINTAIN <name> 
比如
MAINTAINER  test  test@test@163.com
 
3. RUN :  镜像操作指令!
格式:RUN <command>  或者 RUN [“executable”, “param1”, “param2”]
比如
RUN  yum install  httpd
RUN ["/bin/bash", "-c", "echo hello"]
 
4. CMD: 构建容器后调用,容器启动后才能调用!
三种格式:CMD ["executable", "param1", "param2"]、CMD command param1 param2
CMD ["param1", "param2"],RUN和CMD看起来挺像,但是CMD用来指定容器启动时用到的命令,只能有一条。
比如
CMD ["/bin/bash", "/usr/local/nginx/sbin/nginx", "-c", "/usr/local/nginx/conf/nginx.conf"]
 
5. EXPOSE:指定于外界交互的端口!
格式: EXPOSE <port> [<port>...]
比如
EXPOSE 22 80 8443
这个用来指定要映射出去的端口,比如容器内部我们启动了sshd和nginx,所以我们需要把22和80端口暴漏出去。这个需要配合-P(大写)来工作,也就是说在启动容器时,需要加上-P,让它自动分配。如果想指定具体的端口,也可以使用-p(小写)来指定。
 
6. ENV:设置环境变量!
格式: ENV  <key> <value>
比如  
ENV PATH /usr/local/mysql/bin:$PATH
它主要是为后续的RUN指令提供一个环境变量,我们也可以定义一些自定义的变量
ENV MYSQL_version 5.6
 
7. ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget!
格式: add <src> <dest>将本地的一个文件或目录拷贝到容器的某个目录里。 其中src为Dockerfile所在目录的相对路径,它也可以是一个url。
比如
ADD <conf/vhosts> </usr/local/nginx/conf>
 
8. COPY:功能类似ADD,但是不能自动解压文件,也不能访问网络资源!
格式:和ADD一样,不同的是,它不支持url
 
9. ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数!
格式:类似CMD
容器启动时要执行的命令,它和CMD很像,也是只有一条生效,如果写多个只有最后一条有效。CMD不同是:
CMD 是可以被 docker run 指令覆盖的,而ENTRYPOINT不能覆盖。比如,容器名字为xiaoming
我们在Dockerfile中指定如下CMD:
CMD ["/bin/echo", "test"]
启动容器的命令是  docker run xiaoming 这样会输出 test
假如启动容器的命令是 docker run -it xiaoming  /bin/bash  什么都不会输出
ENTRYPOINT不会被覆盖,而且会比CMD或者docker run指定的命令要靠前执行
ENTRYPOINT ["echo", "test"]
docker run -it xiaoming  123
则会输出 test  123 ,这相当于要执行命令  echo test  123 
 
10. VOLUME:用于持久化目录!
格式: VOLUME ["/data"]
创建一个可以从本地主机或其他容器挂载的挂载点。
 
11. USER:  指定容器运行用户,一般不指定默认ROOT用户!
格式:USER daemon
指定运行容器的用户
 
12. WORKDIR:  工作目录,类似CD命令!
格式: WORKDIR  /path/to/workdir
为后续的RUN、CMD或者ENTRYPOINT指定工作目录
 
 
二、dockerfile使用
 
需求:使用dockerfile方式,新建一个容器,安装Nginx WEB服务,开放80端口
 
1:编写Dockerfile执行文件
[root@host1 docker]# vim Dockerfile
## Set the base image to CentOS //设置基于为centos镜像
FROM centos
 
## Author information //指定作者信息
MAINTAINER test test@163.com
 
## Installation tools required //安装nginx之前所需要的工具包
RUN yum -y install wget gcc pcre-devel zlib zlib-devel make net-tools
 
## Installl nginx //安装nginx
ADD http://nginx.org/download/nginx-1.14.2.tar.gz .
RUN tar -zxf nginx-1.14.2.tar.gz
RUN cd nginx-1.14.2 && ./configure --prefix=/usr/local/nginx && make && make install
RUN rm -f /usr/local/nginx/conf/nginx.conf
COPY nginx_conf /usr/local/nginx/conf/nginx.conf
 
## ENV Nginx path //设置nginx环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
 
## Open ports //打开80端口外放
EXPOSE 80
 
## Set the default command to execute when creating a new container //
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd
 
 
2:执行Dockerfile文件,镜像名称为ABC,后面点表示docker
[root@host1 docker]# docker build -t abc .
 
3:映射容器80端口,让外部访问
[root@host1 docker]# docker run -itd -p 8080:80 abc bash
 
 
4:进入容器查看是否启动nginx
[root@host1 ~]# docker exec -it 6ce021 bash
[root@6ce021dc323d /]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7/nginx: master pro

dockerfile-格式和使用的更多相关文章

  1. Docker Dockerfile详解

    http://blog.csdn.net/wsscy2004/article/details/25878223 如何使用 Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等 ...

  2. Docker镜像与仓库(二)Dockerfile

    Docker镜像文件与仓库(二) Docker镜像文件与仓库(二) Dockerfile指令 Dockerfile格式: 1.#Comment注释2.INSTRUCTION大写的指令名 argumen ...

  3. dockerfile基础命令

    一直想写一个, 但发现网上有很多了, 直接copy把 如何使用 Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等.当前目录下包含Dockerfile,使用命令build来 ...

  4. Docker | 第四章:Dockerfile简单介绍及使用

    前言 前一章节,介绍了Docker常用的命令.在基本使用上,熟悉这些常用的命令基本上就够了.但在一些场景下,比如在部署SpringBoot应用时,通常我们都是打成Jar包,然后利用java命令进行运行 ...

  5. docker Dockerfile里使用的命令说明

    一,dockerfile格式 注释# 指令 参数 指令不区分大小写,但是推荐全部大写指令. 指令从上到下顺序被执行 第一个指令必须是[FROM],指示出要使用的基础镜像. 执行docker file时 ...

  6. Dockerfile解析(八)

    一.Dockerfile是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 1. 构建的步骤 运行容器:docker run 构建新的镜像:docker ...

  7. docker 实践六:dockerfile 详解

    本篇开始来学习关于 dockerfile 的知识. 注:环境为 CentOS7,docker 19.03. dockerfile 是⼀个⽂本格式的配置⽂件, ⽤户可以使⽤ dockerfile 来快速 ...

  8. DOCKER 学习笔记2 认识dockerfile自定义镜像

    Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...

  9. 编写 Dockerfile 生成自定义镜像

    一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dock ...

  10. docker容器dockerfile详解

    docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...

随机推荐

  1. pat 1149 Dangerous Goods Packaging(25 分)

    1149 Dangerous Goods Packaging(25 分) When shipping goods with containers, we have to be careful not ...

  2. 力扣(LeetCode)整数形式的整数加法 个人题解

    对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+K 的 ...

  3. PHP的两种选择防止sql注入

    1.使用PDO: $stmt = $pdo->prepare('SELECT * FROM user WHERE name = :name'); $stmt->execute(array( ...

  4. Excel的常用函数

    1.查找重复内容=IF(COUNTIF(A:A,A2)>1,"重复","") 2.重复内容首次出现时不提示=IF(COUNTIF(A$2:A2,A2)&g ...

  5. ubuntu 16.04上源码编译opengv | compile opengv on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/1e5d14ee/,欢迎阅读! compile opengv on ubuntu 16.04 Series compile open ...

  6. 万恶之源-python的进化

    列表 列表的增删改查 3. 列列表的嵌套 元组和元组嵌套 5. range ⼀一. 列表 1.1 列表的介绍 列表是python的基础数据类型之⼀一 ,其他编程语⾔言也有类似的数据类型. 比如JS中的 ...

  7. Nvm安装步骤

    下载地址 https://github.com/coreybutler/nvm-windows/releases 解压压缩包,后是一个.exe结尾的安装文件,双击安装, 选择安装位置,如下图: 设置n ...

  8. 嵌入式、C语言位操作的一些技巧汇总

    下面分享关于位操作的一些笔记: 一.位操作简单介绍 首先,以下是按位运算符: 在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值, ...

  9. json注记

    Javascript支持的转换方式  eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 注:ie8(兼容模式), ...

  10. 链式栈-C语言实现

    相对于顺序栈的空间有限,链式栈的操作则更加灵活 #include<stdio.h> #include<malloc.h> typedef int SElemType; //元素 ...