1

个人理解:使用Dockerfile来构建镜像其实是将应用部署及相关环境配置的命令集成到Dockerfile中,以便能统一镜像内容,与传统的部署差别在于,使用Dockerfile部署可以减小镜像内容的差异,方便控制。

先说明Dockerfile中包含哪些内容:

  • 基础镜像信息

  • 维护者信息

  • 镜像操作指令

  • 容器启动时执行指令


clipboard.png

准备环境

#mkdir -p /opt/docker-file/nginx
#cd /opt/docker-file/nginx
#vim Dockerfile

Dockerfile内容

[lileikf2016@instance-1 nginx]$ cat Dockerfile
#This is my docker file about nginx
#Version: 1.0.0
#This is my docker file about nginx
#Version: 1.0.0
#Author: Profeel Wang

#Base image
FROM centos

#Maintainer
MAINTAINER Profeel Wang cqupt_wq@hotmail.com

#Add files
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.11.13.tar.gz /usr/local/src

#RUN
RUN yum install -y wget gcc gcc-c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www

#WORKDIR
WORKDIR /usr/local/src/nginx-1.11.13

#RUN
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.37 && make && make install

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf


ENV PATH /usr/local/nginx/sbin:$PATH
#Expose Port
EXPOSE 80

#Run the application
CMD ["nginx"]

启动镜像

sudo docker build -t nginx-file:v1 .

查看构建的镜像

[lileikf2016@instance-docker nginx]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-file          v1                  cbb545419976        15 minutes ago      394.9 MB
docker.io/centos    latest              a8493f5f50ff        11 days ago         192.5 MB

根据构建的镜像创建容器

sudo docker run -d -p 80:80 nginx-file:v1

查看容器中的镜像是否能访问

clipboard.png
大功告成!


Profeel
289 声望17 粉丝

Brilliant's everywhere.