# Docker Nginx

docker hub 网址:https://hub.docker.com/_/nginx (opens new window)

当前(2021-12-17) latest 版本和 1.21.4 版本是同一个版本;stable 版本和 1.20.2 版本是同一个版本。

# 1. 安装及测试

# 查询中央仓库
docker search -f is-official=true mysql

# 从中央仓库下载
docker pull nginx:1.20.2

# 或,直接导入已有的镜像文件
# docker load -i nginx-1.20.2.tar

# 查看本地镜像
docker images

# 会出现类似如下内容:
# REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
# nginx         1.18.0    b9e1dc12387a   2 months ago   133MB
# nginx         1.19.9    7ce4f91ef623   2 days ago     133MB

运行容器:

# 删除曾经已有的同名容器
docker stop nginx-test
docker rm nginx-test

# 创建并运行 nginx 容器的语法
docker run \
    -d \
    --name <指定容器名> \
    -p <指定宿主机端口>:80 \ 
    nginx:1.20.2

例如:

docker run \
    -d \
    --name nginx-test \
    -p 80:80 \ 
    nginx:1.20.2

验证安装成功

  • 通过 docker ps 命令查看容器的运行信息:

    docker ps
    

    会看到类似如下信息:

  • 访问 nginx 主页

    启动容器后,访问 http://宿主机IP:80 能看到 Nginx 的欢迎界面: Welcome to nginx!

# 2. 容器中的配置文件和数据的存储

  • Docker Nginx 的 “日志” 目录是容器中的
/var/log/nginx/
  • docker-nginx 的静态资源文件目录是容器中的
/usr/share/nginx/html

警告

有同学发现以前的版本中 docker-nginx 并不是到容器中的 /usr/share/nginx/html 目录下加载 .html 等静态资源,而是到的 /etc/nginx/html 下找。

虽然 nginx:1.20.0 是如官方所说使用的是容器中的 /usr/share/nginx/html 目录(1.18.x 好像也是,1.16.x 就不记得了)。然是,如果大家使用 docker-nginx 时,特别是使用老版本时,一旦发现启动 docker-nginx 之后找不到 .html ,那么就留意一下 error.log ,看看错误信息中显示的是到哪里『找』文件,然后调整一下你的映射路径。

  • docker-nginx 的配置文件是容器中的
/etc/nginx/nginx.conf

# 3. 配置与挂载

  • 删除已存在的同名容器
docker rm -f nginx-80
  • 在宿主机上创建目录及配置文件
mkdir -p ~/docker/80/log
  • 创建并运行容器
docker run  \
    -d  \
    --name nginx-80 \
    -p 80:80 \
    -v ~/docker/80/log:/var/log/nginx \
    nginx:1.20.2

# 4. docker-compose 启动

version: '3'
services:
  nginx:
    image: nginx:1.20.2
    container_name: nginx-zgg
    volumes:
      - ~/docker/80/logs:/etc/nginx/logs
      - ~/docker/80/html:/usr/share/nginx/html
    ports:
      - 80:80