Docker 构建nginx镜像
步骤:
(1)创建一个目录,把构建Nginx的Dockerfile文件保存到此目录。
创建一个名为nginxDockerfile的目录。
mkdir nginxDockerfile
(2)进入刚才创建好的目录。
cd nginxDockerfile
(3)创建Dockerfile文件。
vim dockerfile
文件内容如下
FROM centos
MAINTAINER xpx
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
直接执行上面的可能会报错
分析:根据上面的报错显示是镜像源地址访问不到,然后更改/etc/yum.repos.d/CentOS-Base.repo 文件加入AppStream为阿里云的镜像地址还是不行,依然报错
接着直接在dockerfile文件中更改上面报错的http://mirrorlist.centos.org地址将其替换为阿里云的mirrors.aliyun.com
FROM centos:7 # 本地环境是CentOS 7.9所以这里更换为7
MAINTAINER xpx
RUN sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo \
&& sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*.repo \
&& yum clean all \
&& yum makecache #根据报错替换地址并且更新yum缓存
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
更改完后继续执行docker build -t="xpx/nginx:v1" . 构建
这时报下载nginx的错误
搜索问题说是缺少EPEL 仓库的问题,但是查看yum.repos.d目录下发现是有改仓库文件的
可见dockerfile 执行yum install nginx时没有用到/etc/yum.repos.d下的仓库文件。
这时添加RUN yum install -y epel-release命令
FROM centos:7
MAINTAINER xpx
RUN sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo \
&& sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*.repo \
&& yum clean all \
&& yum makecache
RUN yum install -y epel-release
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]