Docker Dockerfile

一、什么是 Dockerfile

比如我想制作一个镜像,这个镜像安装了 lnmp 、redis 、elk 等各种软件,制作流程会是这样:

① 先下载一个基础镜像,如 centos
② 使用这个镜像启动成一个容器
③ 在容器中安装 lnmp 、redis 、elk 等各种软件
④ 最后再把容器制作成一个镜像

什么是 Dockerfile:Dockerfile 相当于一个命令集 ( 命令的集合 ) 文件,我们可以把上面的步骤都写到这个文件,然后执行这个文件就能生成一个镜像

二、Dockerfile 常用指令

FROM          # 指定基于哪个镜像,语法:FROM <image> 或 FROM <image>:<tag>,如 FROM centos:latest
MAINTAINER    # 指定Dockerfile文件的作者信息,语法:MAINTAINER <name> <mail>,如 MAINTAINER xiaoming [email protected]
RUN           # 指定要操作的命令,语法:RUN <command>,如 RUN yum install redis,如果命令有选项必须写成 RUN ["yum", "install", "-y", "redis"]
CMD           # 指定容器启动时要执行的命令,语法:CMD <command>,如 CMD yum install redis,如果命令有选项必须写成 CMD ["yum", "install", "-y", "redis"]
EXPOSE        # 指定容器要开放的端口,以便外部能访问,如 EXPOSE 22 80 443 表示开放 22 80 443 这三个端口,但必须结合 docker -p 80:80 这种形式来使用
ENV           # 用于定义环境变量,如 ENV PATH /usr/local/bin:$PATH,也可以自定义用户变量,如 EVN MySQL_Version 5.6,定义的变量可以让 RUN 或 CMD 使用
ADD           # 用于拷贝宿主机的文件到容器的某个目录里,语法:ADD <src> <dest>,如 ADD 1.txt /data 表示拷贝宿主机的1.txt到容器的/data目录,<src>也可以是一个url
COPY          # 用法与ADD一致,不同的是,ADD可以使用url,COPY不能使用url
ENTRYPOINT    # 指定容器启动时要执行的命令,用法与CMD一致,不同的是,CMD的命令会被覆盖,比如 docker run -itd centos bash 去启动容器时,bash就是启动容器时执行的命令
              # 而如果我们写了 CMD echo 123 是不会执行的,因为被bash命令覆盖了,而我们使用ENTRYPOINT就不会被覆盖,而且会优先执行ENTRYPOINT指定的命令再执行bash命令
              # 另外一点,如果我们再Dockerfile文件中写了多条CMD指令,那么只有最后一条会执行,使用ENTRYPOINT则每一条都会执行
VOLUME        # 指定挂载目录,如 VOLUME ["/data"] 表示把宿主机的/data目录挂载到容器里,但不会指定挂载到容器里的哪个目录,需要使用 docker inspect 来查看,参考链接
USER          # 指定启动容器的用户,如 USER root 表示使用 root 用户来启动容器
WORKDIR       # 指定工作目录,对 RUN,CMD,ENTRYPOINT,COPY,ADD 生效,比如 WORKDIR /data,那么我执行 RUN echo 123 相当于执行 cd /data; echo 123

三、Dockerfile 实例:安装 Nginx

原文地址:https://www.cnblogs.com/pzk7788/p/10198259.html

时间: 2024-07-31 09:40:16

Docker Dockerfile的相关文章

Docker Dockerfile详解

dockerfike快速创建自定义的Docker镜像 一.目录 1.docker典型结构 2.指令介绍 3.创建docker镜像 二.结构 DockerFile分为四部分组成:基础镜像信.维护者信息.镜像操作指令和容器启动时执行指令.例如: #第一行必须指令基于的基础镜像 From ubutu #维护者信息 MAINTAINER docker_user [email protected] #镜像的操作指令 apt/sourcelist.list RUN apt-get update &&

.Net Core+cenos7+Docker+Dockerfile 部署实践

因为这段时间比较忙,同时也在抽时间将开发框架转移到 .net Core 上 所以写博客的时间就少了,这次我利用dockerfile成功将.net Core程序部署到了cenos7容器中,特抽时间把我的操作过程总结出来和大家分享. 首先要准备一个LINUX系统,可以是ubuntu,也可以是centos,我用的是虚拟机上装ubuntu14.04 然后安装docker,这个安装过程我就不说了,大家自己在网上搜索一下吧,大把,操作也简单. 我用的版本是 然后我建议先pull一个centos 7的镜像到本

docker: Dockerfile命令介绍

pre.ctl { font-family: "Liberation Mono", monospace } p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 前一章介绍了Dockerfile创建镜像的方法,Dockerfile文件都是一些指令,因此要掌握Dockerfile就必须了解这些指令.这一章就介绍下Dockerfile的指令. From: 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么写

Docker Dockerfile 指令

Dockerfile 指令 CMD CMD指令用于指定一个容器启动时要运行的命令.这有点儿类似于RUN指令,只是RUN指令是指定镜像被构建时要运行的命令,而CMD是指定容器被启动时要运行的命令.这和使用docker run命令启动容器时指定要运行的命令非常类似 $ sudo docker run -i -t jamtur01/static_web /bin/true 可以认为上述命令和在Dockerfile中使用如下的CMD 指令是等效的. CMD ["/bin/true"] 选项和命

(八)Docker Dockerfile

虽然,前面已经会 使用 Nginx 和 docker selenium 来启动容器,但也仅仅是会使用,Dcoker 中还有许多概念和细节需要我们继续学习. Dockerfile 文件分析 Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行. 一般的 Dockerfile 分为四部分:基础镜像信息. 维护者信息. 镜像操作指令 和 容器启动时执行指令 . 以Selenium/Hub 的 Dockerfile 文件为例: # !!!!!!!!!!!!!!!!!!!!!!!!!!

Docker DockerFile文件指令

1.dockerfile指令格式 # Comment注释 INSTRUCTION argument指令名 + 参数 2.普通指令 1. FROM 已存在的镜像,基础镜像,第一条非注释指令 FROM <image> FROM <image>:<tag> 2. MAINTAINER 镜像作者信息.联系信息 与dockercommit -a类似 MAINTAINER <name> 3. RUN 指定当前镜像中运行的命令 每一个RUN指令都毁在当层镜像的上层创建一个

docker Dockerfile学习---构建redis环境

1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz wget http://mirrors.aliyun.com/repo/epel-7.repo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo tar -zxf redis-5.0.5.tar.gz 2.编辑Docke

docker Dockerfile文件的编写部分命令

镜像的构建过程:编写dockerfile文件,执行docker build 进行构建镜像,最后docker run 运行容器镜像实例. docker build -t mycentos:1.01 . 构建镜像,最终的名字为mycentos,docker build -f /root/firstdockerfile/Dockerfile2 -t cmdtest . -f参数需要加绝对路径,当当前没有dockerfile文件时需要使用这个参数. docker run -it mycentos:1.0

Docker Dockerfile基本配置

1.dockerfile介绍 Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker build命令从Dockerfile中构建镜像.这个过程与传统分布式集群的编排配置过程相似,且提供了一系列统一的资源配置语法.用户可以用这些统一的语法命令来根据需求进行配置,通过这份统一的配置文件,在不同的平台上进行分发,需要使用时就可以根据配置文件自动化构建,这解决了开发/运维人员构建镜像的复杂过程.同时,Dockerfile与镜像配合使用,使Docker在构建