Dockerfile知识点
- FORM
基础镜像信息 - MAINTAINER
维护者信息 - RUN
运行指定的命令 - COPY
复制文本或文件 - ADD
复制文件,会自动解压 - WORKDIR
进入指定目录,等同:cd - ENV
设置环境变量 - VOLUME
目录挂载 - EXPOSE
开放端口 - CMD
容器启动命令,进程要一直运行下去
样例:自动构建nginx镜像
-
创建目录
构建的文件名称必须为:Dockerfile[root@docker /]# mkdir /opt/docker-file/nginx -p [root@docker /]# touch Dockerfile [root@docker /]# cd /opt/docker-file/nginx/ [root@docker nginx]# touch Dockerfile [root@docker nginx]# ll total 0 -rw-r--r-- 1 root root 0 Dec 7 16:30 Dockerfile
-
编辑Dockerfile文件
#This is auto build nginx #Version 1.0 #Author silly #Base image FROM centos #Maintainer MAINTAINER silly #copy file ADD nginx-1.14.2.tar.gz /usr/local/src ADD pcre-8.00.tar.gz /usr/local/src #install software RUN yum install -y wget gcc gcc-c++ make openssl-devel #create user www RUN useradd -s /sbin/nologin -M www #cd /usr/local/src/nginx-1.14.2 WORKDIR /usr/local/src/nginx-1.14.2 #configure nginx RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with- http_stub_status_module --with-pcre=/usr/local/src/pcre-8.00 && make && make install #modify nginx to run in the foreground RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #open port 80 EXPOSE 80 #set env ENV PATH /usr/local/nginx/sbin:$PATH #cmd nginx CMD ["nginx"]
-
自动构建Dockerfile
docker build -t nginx-file:v1 /opt/docker-file/nginx/
[root@docker nginx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx-file v1 0e364c53448b 9 minutes ago 445 MB
构建过程
[root@docker nginx]# docker build -t nginx-file:v1 /opt/docker-file/nginx/ Sending build context to Docker daemon 2.245 MB Step 1/12 : FROM centos ---> 0f3e07c0138f Step 2/12 : MAINTAINER silly ---> Running in 5d731cf47f02 ---> 329faae63e7d Removing intermediate container 5d731cf47f02 Step 3/12 : ADD nginx-1.14.2.tar.gz /usr/local/src ---> c2cf67c12a7c Removing intermediate container 5ff0a558e41b Step 4/12 : ADD pcre-8.00.tar.gz /usr/local/src ---> a55e0c559803 Removing intermediate container a3df78a4ee47 Step 5/12 : RUN yum install -y wget gcc gcc-c++ make openssl-devel ---> Running in d203097b040e Complete! ---> dbb03ea989ca Removing intermediate container d203097b040e Step 6/12 : RUN useradd -s /sbin/nologin -M www ---> Running in fb2ccb66c2a5 ---> f0a8d2c3058c Removing intermediate container fb2ccb66c2a5 Step 7/12 : WORKDIR /usr/local/src/nginx-1.14.2 ---> 6dc2f053b8fd Removing intermediate container 9a097287c85e Step 8/12 : RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with- http_stub_status_module --with-pcre=/usr/local/src/pcre-8.00 && make && make install ---> Running in 41b1a6453ffe ---> 61e9e0dbb033 Removing intermediate container 41b1a6453ffe Step 9/12 : RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf ---> Running in 8eb0be4aa318 ---> 7b84bdee1125 Removing intermediate container 8eb0be4aa318 Step 10/12 : EXPOSE 80 ---> Running in bc097c4e0bd3 ---> ebff832d8667 Removing intermediate container bc097c4e0bd3 Step 11/12 : ENV PATH /usr/local/nginx/sbin:$PATH ---> Running in e467d807f858 ---> 3596260b710a Removing intermediate container e467d807f858 Step 12/12 : CMD nginx ---> Running in af5f7d157ba9 ---> 0e364c53448b Removing intermediate container af5f7d157ba9 Successfully built 0e364c53448b
-
运行自动构建的nginx容器
[root@docker nginx]# docker run -d -p 10009:80 nginx-file:v1 [root@docker nginx]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ffe0433055ee nginx-file:v1 "nginx" 7 minutes ago Up 7 minutes 0.0.0.0:10009->80/tcp amazing_meninsky