Dockerfile中的主要内容
- FROM 它的妈妈是谁(基础镜像)
- MAINTAINER 告诉别人,你创建了他(维护者信息)
- RUN 你让他干什么(在命令前面加上RUN)
- ADD 往他肚子里放点文件(COPY文件,会自动解压)
- WORKDIR 我是cd,(就是cd命令)
- VOLUME 给我一个存放行李的地方(目录挂载)
- EXPOSE 我要打开的门是什么(端口)
- RUN 进程要一直运行下去
- ENTRYPOINT
- CMD
RUN:设置构件容器时就运行的命令以及提交运行结果,RUN经常用于安装软件包。dockerfile中可以写多条RUN指令
CMD:设置容器启动时执行的命令,在构件时并不运行,CMD能够被docker run后面跟的命令行参数替换。dockerfile中只能写一条CMD指令,如果写了多条,那么只有最后一条生效。
ENTRYPOINT:设置容器启动时执行的命令,ENTRYPOINT不能被docker run后面跟的命令行参数替换。dockerfile中只能写一条ENTRYPOINT指令,如果写了多条,那么只有最后一条生效。
如果dockerfile中出现了ENTRYPOINT 会覆盖CMD(也就是数CMD执行的命令不会执行)
Dockerfile内容大体分为4部分
- 1 基础镜像信息
- 2 维护者信息
- 3 镜像操作指令
- 4 容器启动时执行指令
编写dockerfile
#this docker file
#Version 1
#Author: XXXX
#Base image
FROM centos
MAINTAINER XXXX XX@qq.com
#Commands
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm && yum -y install nginx
ADD index.html /usr/share/nginx/html/index.html
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx"]
注:在Dockerfile文件中每运行一个RUN就会在构建镜像时多加一层,所以多个RUN利用&&合并起来会较少构建镜像的层数
mkdir -p /opt/dockerfile/nginx
cd /opt/dockerfile/nginx/
vim Dockerfile
注:Dockerfile中ADD添加的文件必须要与Dockerfile文件在同一目录下 Dockerfile必须这个名字
vim index.html
docker build -t mynginx:v3 ./
- -t: 镜像的名字及标签
- ./ Dockfile文件的路径
创建完镜像后启动容器
docker run -d -p 80:80 mynginx:v3