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 
<html>
<body>
<p>Docker install Nginx ok!</p>
</body>
</html>

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. 求知若饥,虚心若愚。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐