Nginx是一款功能强大的开源反向代理服务器,支持HTTP、HTTPS、SMTP、POP3、IMAP等协议。
它也可以作为负载均衡器、HTTP缓存或Web服务器。专注于高并发和高性能的应用场景。
一、使用 Docker Hub的官方 Nginx镜像1、使用 docker run 命令直接运行官方 Nginx镜像
创建并启动容器
[root@centos7 ~]# docker run --name "mynginx" -p 80:80 -d nginx:1.19.1
a15320cbb6857fff1615ba4bd79a7ea9ad0af809b9095140d853d127adf92544
[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a15320cbb685 nginx:1.19.1 "/docker-entrypoint.…" 20 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp mynginx
打开浏览器,访问:
/usr/share/nginx/html/ 目录是存放页面。
二、基于系统镜像,完全自己安装构建 Nginx的自定义镜像
使用上次添加SSH服务 ubuntu:18.04镜像作为基础镜像来构建。
1、创建上下文路径
创建一个 nginx_ubuntu 工作目录,在其中创建 Dockerfile文件、run.sh 文件和 public-html目录。在 public-html目录下创建 index.html文件。
[root@centos7 nginx_ubuntu]# tree
.
├── Dockerfile
├── public-html
│ └── index.html
└── run.sh
1 directory, 3 files
[root@centos7 nginx_ubuntu]# cat ./public-html/index.html
Docker install Nginx ok!
2、编写 Dockerfile文件
[root@centos7 nginx_ubuntu]# cat Dockerfile
FROM sshd2:ubuntu
LABEL author="赵云"
# 安装nginx,设置nginx以非daemon方式启动。
RUN \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# 复制服务启动脚本并设置执行权限,会覆盖之存在的文件
COPY run.sh /run.sh
RUN chmod 755 /*.sh
#定义可以被挂载的目录(备份重要数据),分别是虚拟主机的挂载目录、证书目录、配置目录、和日志目录
VOLUME ["/etc/nginx/sites-enabled","/etc/nginx/certs","/etc/nginx/conf.d", "/var/log/nginx"]
#暴露端口
EXPOSE 80
EXPOSE 443
CMD ["/run.sh"]
3、编写 run.sh脚本
[root@centos7 nginx_ubuntu]# cat run.sh
#!/bin/bash
/usr/sbin/sshd &
/usr/sbin/nginx
4、构建自定义镜像,创建并启动容器
[root@centos7 nginx_ubuntu]# docker build -t nginx:uv1 .
[root@centos7 nginx_ubuntu]# docker run -d -p 81:80 -v /root/nginx_ubuntu/public-html:/var/www/html:ro nginx:uv1
e8bb15b63cd0e711fbff10115eb5d395f2f3b0662d1dbfa226908fccab42dab1
[root@centos7 nginx_ubuntu]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8bb15b63cd0 nginx:uv1 "/run.sh" 5 seconds ago Up 4 seconds 22/tcp, 443/tcp, 0.0.0.0:81->80/tcp unruffled_raman
上面apt-get 安装和pull nginx:1.19.1两种方式发现 nginx的页面目录不一样,可以通过配置文件查看,也可以自定义该目录。
—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。