1.概述
Nginx也是一个很经常用到的基础镜像,不过一般都用官方的Nginx镜像,该章节内容不如JDK和Tomcat镜像制作实用,但是作为一名技术人员,多学习一点总是有益。
2.常用命令复习
# 查看正在运行的镜像进程
docker ps
# 查看所有的镜像进程,包括失败的
docker ps -a
# 停止一个容器
docker stop xxx
# 启动一个容器
docker start yyy
# 删除一个容器
docker rm xxx
# 删除镜像
docker rmi xxx
# 打包镜像,标签为nginx:1.22.1
docker build . -t nginx:1.22.1
docker build -f /path/file . -t nginx:1.22.1
# 运行标签为nginx:1.22.1的镜像
docker run -d -p 80:80 nginx:1.22.1
docker run -d -p 80:80 -v data-nginx:/usr/local/nginx/html nginx:1.22.1
file://wsl%24/docker-desktop-data/version-pack-data/community/docker/volumes/data-nginx/
资源管理器输入以上地址找到本地卷
3.编写Dockerfile
第一稿先能运行,参数不讲究。第一稿的安装包依赖通过网络下载,如果不能通过网络下载制作,会比较麻烦。这里nginx安装路径为/usr/local/nginx
# 基础镜像
FROM centos:7
# 维护人员、开发人员
MAINTAINER zouh
# 设置上海时区,即北京时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 文件放在当前目录下,拷过去会自动解压
ADD nginx-1.22.1.tar.gz /usr/local/
# 安装依赖包
RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
RUN mkdir /usr/local/nginx
WORKDIR /usr/local/nginx-1.22.1
RUN ./configure \
&& make \
&& make install
EXPOSE 80 443
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
使用如下命令启动nginx,本地通过http://127.0.0.1访问。
docker run -d -p 80:80 nginx:1.22.1
4.文件映射到本地磁盘
包含页面文件和nginx的配置文件
docker run -d -p 80:80 -v data-nginx:/usr/local/nginx/html -v conf-nginx:/usr/local/nginx/conf nginx:1.22.1
5.使用普通用户启动nginx
重新写一份dockerfile
# 基础镜像
FROM centos:7
# 维护人员、开发人员
MAINTAINER zouh
# 设置上海时区,即北京时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 新建用户组和用户
RUN groupadd nginxgroup
RUN useradd -d /home/nginxuser -s /bin/bash -m nginxuser -g nginxgroup
# 文件放在当前目录下,拷过去会自动解压
ADD nginx-1.22.1.tar.gz /home/nginxuser/
# 安装依赖包
RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
RUN mkdir /home/nginxuser/nginx
WORKDIR /home/nginxuser/nginx-1.22.1
RUN ./configure \
--prefix=/home/nginxuser/nginx \
&& make \
&& make install
# 修改权限
RUN chown nginxuser:nginxgroup -R /home/nginxuser/nginx
USER nginxuser
EXPOSE 80 443
CMD ["/home/nginxuser/nginx/sbin/nginx","-g","daemon off;"]
制作镜像
docker build . -t nginx:1.22.1-OP-0.2
运行镜像
docker run -d -p 80:80 -v data-nginx:/home/nginxuser/nginx/html -v conf-nginx:/home/nginxuser/nginx/conf nginx:1.22.1-OP-0.2