dockerfile是创建镜像的一种,通过已有镜像的基础上再在上面部署一些别的。
在这个基础镜像上搭建,我这个是一个空的centos镜像
我这里用http的yum仓库存放了nginx和rpm包
创建dockerfile
vim Dockerfile
写入
#设置基础镜像
FROM centos
#维护该镜像的用户信息
MAINTAINER tarro
#设置本地yum源
RUN mkdir /etc/yum.repos.d/bak ; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
ADD centos.repo /etc/yum.repos.d/centos.repo
#安装相关依赖包
RUN yum clean all ; yum -y install wget proc-devel net-tools gcc zlib zlib-devel make --skip-broken
#下载并解压nginx源码包
RUN wget http://192.168.6.1/nginx/nginx-1.12.0.tar.gz
RUN tar zxf nginx-1.12.0.tar.gz
#切换目录
WORKDIR nginx-1.12.0
#编译安装
RUN ./configure --prefix=/usr/local/nginx --without-http_rewrite_module && make && make install
#开启端口
EXPOSE 80
EXPOSE 443
#修改nginx文件,以非daemon方式启动
RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf
#复制服务启动脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]
同时还要yum仓库和run文件
vim run.sh
写入
#!/bin/bash
/usr/local/nginx/sbin/nginx
还有repoyum仓库文件
vim centos.repo
写入
[local]
name=centos
baseurl=http://192.168.6.1/yum
enabled=1
gpgcheck=0
生成镜像
docker build -t nginx:nginx ./
通过centos基础镜像生成了个名为nginx的镜像
全程没报错,基础的没问题
docker run -d -P nginx:nginx
搭建成功