# Docker Nginx
docker hub 网址:https://hub.docker.com/_/nginx (opens new window) 。
当前(2021-04-02) latest 版本和 1.19.9 版本是同一个版本;stable 版本和 1.18.0 版本是同一个版本。
# 1. 安装及测试
# 查询中央仓库
docker search -f is-official=true mysql
# 从中央仓库下载
docker pull nginx:1.18.0
# 或,直接导入已有的镜像文件
# docker load -i nginx-1.1.18.0.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.18.0
例如:
docker run \
-d \
--name nginx-test \
-p 80:80 \
nginx:1.16.1
验证安装成功
通过 docker ps 命令查看容器的运行信息:
docker ps
会看到类似如下信息:
略
访问 nginx 主页
启动容器后,访问 http://宿主机IP:80 能看到 Nginx 的欢迎界面: Welcome to nginx!
# 2. 容器中的配置文件和数据的存储
Docker Nginx 的配置文件是容器中的
/etc/nginx/nginx.conf
Docker Nginx 的日志目录是容器中的
/var/log/nginx/
Docker Nginx 的静态资源文件目录是容器中的
/usr/share/nginx/html
# 3. 配置与挂载
删除已存在的同名容器
docker stop nginx-80 docker rm nginx-80
后续可通过 docker run 的 --rm 选项免去『删除』这步操作。
在宿主机上创建目录及配置文件。
mkdir -p ~/docker/nginx/80/log touch ~/docker/nginx/80/nginx.conf
创建并运行容器
docker run \ -d \ --rm \ --name nginx-80 \ -p 80:80 \ -v ~/docker/nginx/80/nginx.conf:/etc/nginx/nginx.conf:ro \ -v ~/docker/nginx/80/log:/var/log/nginx \ nginx:1.18.0
以下内容是 nginx 配置文件的默认内容:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
# 4. docker-compose 启动
version: '3'
services:
nginx:
image: nginx:stable
container_name: nginx-zgg
volumes:
- ~/docker/nginx/80/logs:/etc/nginx/logs
- ~/docker/nginx/80/nginx.conf:/etc/nginx/nginx.conf
- ~/docker/nginx/80/html:/usr/share/nginx/html
ports:
- 80:80