Docker 镜像与制作(四)DockerFile 制作编译版 nginx 镜像

DockerFile 制作编译版 nginx 镜像:

下载镜像并初始化系统:

docker pull centos
mkdir -pv /opt/dockerfile/web/nginx

#目录结构按照业务类型或系统类型等方式划分,方便后期镜像比较多的时候进行分类。

编写 Dockerfile:

vim /opt/dockerfile/web/nginx/Dockerfile

生成的镜像的时候会在执行命令的当前目录查找 Dockerfile 文件, 所以名称不可写错, 而且 D 必须大写
My Dockerfile
"#"为注释,等于 shell 脚本的中#
除了注释行之外的第一行,必须是 From xxx (xxx 是基础镜像)

# 第一行先定义基础镜像,后面的本地有效的镜像名,如果本地没有会从远程仓库下载,第一行很重要
From centos:latest

# 镜像维护者的信息: 
MAINTAINER chen [email protected]

#自动解压压缩包
ADD nginx-1.10.3.tar.gz /usr/local/src/ 
#执行的命令,将编译安装 nginx 的步骤执行一遍
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop

RUN cd /usr/local/src/nginx-1.10.3 && ./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

# 向外开放的端口,多个端口用空格做间隔,启动容器时候-p 需要使用此端向外映射,如: -p 8081:80,则 80 就是这里的 80
EXPOSE 80 443 

# 运行的命令,每个 Dockerfile 只能有一条,如果有多条则只有最后一条被执行
CMD ["nginx","-g","daemon off;"] 

#如果在从该镜像启动容器的时候也指定了命令,那么指定的命令会覆盖Dockerfile 构建的镜像里面的 CMD 命令,即指定的命令优先级更高, Dockerfile 的优先级较低一些

准备源码包与配置文件:

  1. 配置文件关闭后台运行
cp /usr/local/nginx/conf/nginx.conf /opt/dockerfile/web/nginx
  1. nginx 源码包
cp /usr/local/src/nginx-1.10.3.tar.gz /opt/dockerfile/web/nginx 
  1. 执行镜像构建
docker build –t jack/nginx-1.10.3:v1 /opt/dockerfile/web/nginx/
  1. 构建完成:
    可以清晰看到各个步骤执行的具体操作

  2. 查看是否生成本地镜像

docker images
  1. 从镜像启动容器
docker run -d -p 80:80 --name yum-nginx jack/nginx-1.10.3:v1 /usr/sbin/nginx
  1. 访问 web 界面
    在这里插入图片描述
发布了254 篇原创文章 · 获赞 346 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42758707/article/details/100811237