Dockerfile自动构建镜像
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。打个比方,镜像相当于你开的中药,dockerfile相当于中药的配方表。
写Dockerfile的思路/步骤如下。
1、手动制作docker镜像,记录历史命令
2、根据历史命令撰写dockenfile文件
3、docker build构建docker镜像
4、测试镜像的功能
dockerfile常用指令
# FROM:指定基础镜像
# RUN:制作镜像过程中在容器内部执行的命令
# CMD:容器启动时执行的基础命令(容器启动后PID为1的进程),可以被docker run命令后面的参数替换
# ENTRYPOINT:容器启动时执行的初始命令,不能被替换。如果同时使用CMD和ENTRYPOINT,CMD命令将作为ENTRYPOINT命令的参数
# ADD:把dockerfile当前目录下的文件拷贝到容器中(自动解压tar包)
# COPY:把dockerfile当前目录下的文件拷贝到容器中(不解压tar包)
# EXPOSE:声明镜像暴露的端口
--------------------------------
WORKDIR:指定容器的默认工作目录,非必须
VOLUME:声明下文件映射挂载目录(你可以挂载我这里面哪个目录)
ENV:环境变量(比如ssh的密码,数据库的密码)
LABEL:镜像的属性标签,随便写
MAINTAINER:管理者标识
[root@docker01 ~]# docker inspect nginx:latest
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
RUN命令的格式
# RUN命令有以下两种格式:
1、shell格式:
RUN <命令行命令>
2、exec格式:
RUN ["可执行文件","参数1","参数2"]
# 例子
[root@docker01 ~/dockerfile]# vim Dockerfile
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #//也可用COPY代替
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN sed -i '/aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo #//优化,删掉阿里源里没用的。
RUN yum install -y nginx
ADD h5_games.tgz /usr/share/nginx/html
EXPOSE 80 #//可不写。容器内nginx默认是80端口
CMD ["/sbin/nginx","-g","daemon off;"] #//注意要用双引号