码迷,mamicode.com
首页 > 其他好文 > 详细

Docker Dockerfile

时间:2018-12-30 02:44:49      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:href   file   需要   http   结合   yum   blank   查看   version   

一、什么是 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 xiaoming@qq.com
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

 

 

 

 

    

Docker Dockerfile

标签:href   file   需要   http   结合   yum   blank   查看   version   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!