七、实例Dockerfile创建nginx镜像
基础Dockerfile构建nginx镜像
<span style="box-sizing: border-box;padding-right: 0.1px"># 基于centos构建</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">FROM centos:8</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 说明信息</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">LABEL author=ziruchu</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 安装依赖</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN yum -y install gcc gcc-c++ glibc make autoconf openssl openssl-devel </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 创建用户与组</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN groupadd nginx</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN useradd -g nginx nginx -M -s /sbin/nologin</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 添加本地内容到镜像并解压</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">ADD nginx-1.17.4.tar.gz /usr/local/src</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 切换至工作目录</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">WORKDIR /usr/local/src/nginx-1.17.4</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 编译</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN ./configure \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--prefix=/usr/local/nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--user=nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--group=nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-pcre \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_ssl_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_v2_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_realip_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_addition_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_sub_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_dav_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_flv_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_mp4_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_gunzip_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_gzip_static_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_random_index_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_secure_link_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_stub_status_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_auth_request_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-mail \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-mail_ssl_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-stream_ssl_module</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 安装</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN make && make install</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 暴露访问端口</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">EXPOSE 80</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 设置环境变量</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">ENV PATH $PATH:/usr/local/nginx/sbin</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">CMD ["nginx", "-g", "daemon off;"]</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span>
创建镜像
格式
docker build [OPTIONS] PATH | URL |
[options]
- --build-arg=[] 设置镜像创建时的变量
- -f 指定要使用的Dockerfile路径
- -t 镜像名字及标签
<span style="box-sizing: border-box;padding-right: 0.1px">docker build -t imageName:tagName dir</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># imageName:给镜像起的名字</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># tagName:给镜像起的标签名</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># dir Dockerfile所在目录</span>
关于其它参数,请查阅文档
案例
<span style="box-sizing: border-box;padding-right: 0.1px">docker build -t ziruchu:nginx:v1 .</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># . 表示当前目录</span>
实例:构建上述Dockerfile文件
1)构建镜像
docker image build -t nginx:1.17.4 .
2)查看构建的镜像
docker images
若有,则构建成功
3)启动构建好的镜像
docker run -d --name web -p 80:80 nginx:1.17.4
4)输入IP地址进行访问
说明:这些都学习过程中亲自测试过的,一切正常。如果有所疑问,欢迎一起交流学习。
总结
关于Dockerfile构建镜像,其实和源码编译安装非常像,从上面的构建文件来看,用Dockerfile指令来运行执行命令,但是又与源码安装有些不同,这些不同,我暂时没法很好的说出来,就是那句“只可意会不可言传。”。
关于Dockerfile的记录,到这里就结束了,但不会停止。我是做PHP开发的,当然就少不了环境的搭建了。关于Docker搭建LNMP环境,其实我之前已经记录过了,到现在快忘了,不过没有关系,后面使用Dockerfile重新去构建一遍。
我是夕阳何处寻,期待和优秀的你一起同行!
夕阳何处寻
2020年08月10日
请登录后再评论