DockerFile 制作yum 和编译版 nginx 镜像

DockerFile 制作 nginx 镜像

​ DockerFile 可以说是一种可以被 Docker 程序解释的脚本,DockerFile 是由一条条的命令组成的,每条命令对应 linux 下面的一条命令,Docker 程序将这些 DockerFile 指令再翻译成真正的 linux 命令,其有自己的书写方式和支持的命令,Docker 程序读取 DockerFile 并根据指令生成 Docker 镜像,相比手动制作镜像的方式,DockerFile 更能直观的展示镜像是怎么产生的,有了 DockerFile,当后期有额外的需求时,只要在之前的 DockerFile 添加或者修改响应的命令即可重新生成新的 Docke 镜像,避免了重复手动制作镜像的麻烦,具体如下:

一、DockerFile 制作 yum 版 nginx 镜像

1.1下载镜像并初始化系统
docker pull centos:7.8.2003
root@z2:~# docker run -it docker.io/centos:7.8.2003 /bin/bash
[root@8d65712880f5 /]# 

创建dockerfile的文件夹,方便以后的业务镜像分层用

cd /opt
mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}}  -pv
root@z2:/opt/dockerfile/web/nginx# pwd
/opt/dockerfile/web/nginx
1.2 编写 Dockerfile

创建Dockfile 文件。生成的镜像的时候会在执行命令的当前目录查找 Dockerfile 文件,所以名称不可写错

vim ./Dockerfile
FROM centos:7.8.2003

RUN yum install wget -y && cd /etc/yum.repos.d/ && rm -rf ./* && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && wget  -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

RUN yum install nginx -y && rm -rf /usr/share/nginx/html/*
ADD html.tar.gz /usr/share/nginx/html/


EXPOSE 80 443 8080

CMD ["/usr/sbin/nginx","-g","daemon off;"]

1.3 准备页面文件
root@z2:/opt/dockerfile/web/nginx# mkdir html
root@z2:/opt/dockerfile/web/nginx# cd html/
root@z2:/opt/dockerfile/web/nginx/html# ls
1.jpg  index.html
root@z2:/opt/dockerfile/web/nginx/html# cat index.html 
test_index.html

将页面文件打包

root@z2:/opt/dockerfile/web/nginx/html# tar  zcvf   ../html.tar.gz  ./*
./1.jpg
./index.html
root@z2:/opt/dockerfile/web/nginx# ls
Dockerfile  html  html.tar.gz
1.4 构建镜像并且启动容器
root@z2:/opt/dockerfile/web/nginx# docker build -t zt/centos-nginx:v1 .

...
Successfully built 217021645fde
Successfully tagged zt/centos-nginx:v1
docker run  -d -p 80:80 --name "nginx-test" zt/centos-nginx:v1
1.5 访问测试
root@z2:~# curl 192.168.1.102
test_index.html

二、DockerFile 制作 编译 版 nginx 镜像

2.1 下载底层镜像
docker pull centos:7.8.2003
2.2 写dockerfile
FROM centos:7.8.2003
RUN  rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 
RUN yum install -y vim wget tree rzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop 
ADD nginx-1.16.1.tar.gz    /usr/local/src/   
RUN cd /usr/local/src/nginx-1.16.1    && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install 
RUN cd /usr/local/nginx/ 
ADD nginx.conf    /usr/local/nginx/conf/nginx.conf 
RUN useradd      nginx -s /sbin/nologin     
RUN ln -sv /usr/local/nginx/sbin/nginx    /usr/sbin/nginx 
RUN echo "test nginx page" >    /usr/local/nginx/html/index.html 
EXPOSE 80 443   

CMD ["nginx","-g","daemon off;"]
2.3 准备源码包与配置文件
root@z2:/opt/dockerfile/web/nginx# wget http://nginx.org/download/nginx-1.16.1.tar.gz

配置文件随便整一个就行,把源码包解压就有

记得改用户

user nginx;
2.4. 构建镜像并且启动容器
docker build -t zt/centos-nginx:v1 .
docker run  -d -p 82:80 --name "nginx-test" zt/centos-nginx:v1
2.5 验证
root@z2:~# curl http://192.168.1.102:82
test nginx page

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读