「Docker 学习系列」之 Docker 安装 Nginx

209 阅读3分钟

🙏废话不多说系列,直接开整🙏

女25.jpg

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP服务。

(1)检查是否已安装了 nginx

# 检查是否已经安装了 nginx
sudo docker images

结果如下

drew@ubuntu:/snap/bin$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              de974760ddb2        9 days ago          105MB
drew@ubuntu:/snap/bin$

发现没有 nginx 镜像,所以需要安装。

(2)查看可用的 nginx 版本

# 查看可用的nginx版本
$ sudo docker search nginx 

结果如下

drew@ubuntu:/snap/bin$ sudo docker search nginx
[sudo] password for drew:
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        14741               [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   2013                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   813                                     [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   179
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   142
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   122                                     [OK]
jlesage/nginx-proxy-manager        Docker container for Nginx Proxy Manager        105                                     [OK]
bitnami/nginx                      Bitnami nginx Docker Image                      96                                      [OK]
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   91                                      [OK]
jasonrivers/nginx-rtmp             Docker images to host RTMP streams using NGI…   89                                      [OK]
nginxdemos/hello                   NGINX webserver that serves a simple page co…   67                                      [OK]
privatebin/nginx-fpm-alpine        PrivateBin running on an Nginx, php-fpm & Al…   53                                      [OK]
nginx/nginx-ingress                NGINX Ingress Controller for Kubernetes         50
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  32
staticfloat/nginx-certbot          Opinionated setup for automatic TLS certs lo…   20                                      [OK]
schmunk42/nginx-redirect           A very simple container to redirect HTTP tra…   19                                      [OK]
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter                       16
centos/nginx-112-centos7           Platform for running nginx 1.12 or building …   15
centos/nginx-18-centos7            Platform for running nginx 1.8 or building n…   13
bitwarden/nginx                    The Bitwarden nginx web server acting as a r…   12
flashspys/nginx-static             Super Lightweight Nginx Image                   10                                      [OK]
mailu/nginx                        Mailu nginx frontend                            8                                       [OK]
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr…   8                                       [OK]
ansibleplaybookbundle/nginx-apb    An APB to deploy NGINX                          2                                       [OK]
wodby/nginx                        Generic nginx                                   1                                       [OK]
drew@ubuntu:/snap/bin$

(3)拉取 nginx 最新版本

sudo docker pull nginx:latest

image.png

image.png

(4)查看 拉取最新nginx的版本号

# 查看拉取的nginx 的版本号
sudo docker nginx --version  # 或者
sudo docker nginx -v

操作示例

drew@ubuntu:/snap/bin$ sudo docker nginx --version
Docker version 19.03.13, build cd8016b6bc

(5)运行 nginx 容器

# 运行 nginx 容器
sudo docker run --name nginx-test -p 8080:80 -d nginx

参数说明

参数名称参数解释
--name nginx-test容器名称。
-p 8080:80端口进行映射,将本地8080端口映射到容器内部的 80 端口。
-d nginx设置容器在后台一致运行。
操作结果示例
# 操作成功之后,会返回一个UUID作为容器的唯一标识
drew@ubuntu:/snap/bin$ sudo docker run --name nginx-test -p 8080:80 -d nginx
eacdcfafda242c1ab42eb72eaef26110fd48f80b813353e2432d159b43a5e82f

image.png

(6)安装运行成功

通过浏览器直接访问 8080 端口和 nginx 服务:

image.png

(7)停止 nginx 容器服务

image.png

(8)查看 docker 下当前所有的镜像

# 显示docker当前所有的镜像
$ sudo docker images

image.png

(9)查看 docker 中 nginx 的运行日志

# 查看nginx运行日志
$ sudo docker container logs nginx-test

结果如下:

drew@ubuntu:/snap/bin$ sudo docker container logs nginx-test
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
192.168.174.1 - - [20/Apr/2021:10:36:24 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77" "-"
192.168.174.1 - - [20/Apr/2021:10:36:24 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://192.168.174.129:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77" "-"
2021/04/20 10:36:24 [error] 30#30: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.174.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.174.129:8080", referrer: "http://192.168.174.129:8080/"
drew@ubuntu:/snap/bin$

🙏至此,非常感谢阅读🙏

女25.jpg