Docker 安装 Nginx

本文介绍如何使用Docker部署Nginx,包括拉取镜像、启动容器、配置映射及自定义配置文件。通过具体命令演示,读者可学习Docker环境下Nginx的完整部署流程。

命令安装 :docker pull nginx

查找 Docker Hub 上的 nginx 镜像

runoob@runoob:~/nginx$ docker search nginx

NAME DESCRIPTION
STARS OFFICIAL AUTOMATED nginx Official
build of Nginx. 3260 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker
c… 674 [OK] richarvey/nginx-php-fpm Container
running Nginx + PHP-FPM capable … 207 [OK]
million12/nginx-php Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG),
CentOS… 67 [OK] maxexcloo/nginx-php Docker
framework container with Nginx and … 57 [OK] …

这里我们拉取官方的镜像
$ docker pull nginx

等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。

runoob@runoob:~/nginx$ docker images nginx

REPOSITORY TAG IMAGE ID CREATED
SIZE nginx latest 555bbd91e13c 3
days ago 182.8 MB

以下命令使用 NGINX 默认的配置来启动一个 Nginx 容器实例:

$ docker run --name runoob-nginx-test -p 8081:80 -d nginx

runoob-nginx-test 容器名称。
the -d设置容器在在后台一直运行。
the -p 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口。
执行以上命令会生成一串字符串,类似 6dd4380ba70820bd2acc55ed2b326dd8c0ac7c93f68f0067daecad82aef5f938,这个表示容器的 ID,一般可作为日志的文件名。
我们可以使用 docker ps 命令查看容器是否有在运行:
$ docker ps
CONTAINER ID IMAGE … PORTS NAMES
6dd4380ba708 nginx … 0.0.0.0:8081->80/tcp runoob-nginx-test

PORTS 部分表示端口映射,本地的 8081 端口映射到容器内部的 80 端口。
在浏览器中打开 http://127.0.0.1:8081/,效果如下:
在这里插入图片描述
nginx 部署
首先,创建目录 nginx, 用于存放后面的相关东西。
$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:
docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
www: 目录将映射为 nginx 容器配置的虚拟目录。
logs: 目录将映射为 nginx 容器的日志目录。
conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
部署命令
$ docker run -d -p 8082:80 --name runoob-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
命令说明:
-p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
–name runoob-nginx-test-web:将容器命名为 runoob-nginx-test-web。
-v ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
启动以上命令后进入 ~/nginx/www 目录:
$ cd ~/nginx/www
创建 index.html 文件,内容如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

输出结果为:
在这里插入图片描述
相关命令
如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:
$ docker kill -s HUP container-name
重启 NGINX 容器命令:
$ docker restart container-name

<think>我们参考用户的问题和提供的引用内容,用户的问题是:如何在Docker安装和运行Nginx? 根据引用内容,我们可以总结出以下步骤: 1. 拉取Nginx镜像(默认最新版,也可以指定版本) 2. 运行Nginx容器,并配置端口映射和挂载卷(可选,用于配置文件和静态文件) 3. 验证Nginx是否运行成功 我们将按照这些步骤进行说明,并给出相应的命令示例。 同时,我们也会考虑用户可能需要的自定义配置(如修改配置文件、挂载静态文件目录等)。 注意:引用中提到了使用docker-compose的方式(引用[1])和直接使用docker命令的方式(引用[3])。我们将分别说明。 步骤1:拉取Nginx镜像 docker pull nginx # 拉取最新版 或者指定版本:docker pull nginx:1.17 步骤2:运行Nginx容器 有两种方式:直接使用docker命令,或使用docker-compose。 方式一:使用docker命令运行 docker run --name mynginx -p 80:80 -d nginx 参数说明: --name mynginx:为容器指定一个名称 -p 80:80:将主机的80端口映射到容器的80端口(格式:主机端口:容器端口) -d:后台运行 nginx:使用的镜像 如果需要挂载配置文件或静态文件目录,可以使用-v参数: docker run --name mynginx -p 80:80 -v /path/to/conf/nginx.conf:/etc/nginx/nginx.conf -v /path/to/wwwroot:/usr/share/nginx/html -d nginx 注意:nginx的默认静态文件目录在容器内是/usr/share/nginx/html,而配置文件是/etc/nginx/nginx.conf(但实际上nginx的配置包括多个文件,通常我们挂载整个配置目录/etc/nginx/conf.d或者整个/etc/nginx) 方式二:使用docker-compose 创建一个docker-compose.yml文件,内容如下(参考引用[1]并调整): version: '3' services: nginx: image: nginx container_name: mynginx ports: - "80:80" volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./wwwroot:/usr/share/nginx/html restart: always 然后运行:docker-compose up -d 步骤3:验证 在浏览器中访问 http://localhost 或 http://服务器IP,如果看到Nginx欢迎页面,则说明安装成功。 注意:如果是在远程服务器上,请确保服务器的安全组开放了80端口。 另外,引用[2]中提到了负载均衡和静态文件服务的配置,这些属于Nginx的高级配置,可以在安装完成后通过修改配置文件来实现。 根据用户的问题,我们主要回答安装和运行,因此高级配置不在本次回答中展开。 最后,我们生成相关问题。</think>### 在 Docker安装和运行 Nginx 的步骤 #### 1. **拉取 Nginx 镜像** ```bash docker pull nginx # 默认拉取最新版 ``` 或指定版本(如 1.17): ```bash docker pull nginx:1.17 # 引用[4] ``` #### 2. **运行 Nginx 容器** - **基础运行**(映射主机 80 端口到容器 80 端口): ```bash docker run --name mynginx -p 80:80 -d nginx # 引用[3] ``` - `--name mynginx`:容器名称 - `-p 80:80`:端口映射(`主机端口:容器端口`) - `-d`:后台运行 - **挂载配置文件与静态资源**(推荐): ```bash docker run --name mynginx \ -p 80:80 \ -v /宿主机/nginx.conf:/etc/nginx/nginx.conf \ -v /宿主机/wwwroot:/usr/share/nginx/html \ -d nginx ``` - `-v`:挂载目录(配置文件需提前准备) #### 3. **验证是否运行成功** ```bash curl http://localhost # 应返回 Nginx 欢迎页面 ``` 或浏览器访问 `http://服务器IP`。 --- ### 进阶配置(使用 Docker Compose) 创建 `docker-compose.yml` 文件: ```yaml version: '3.8' services: nginx: image: nginx:latest container_name: mynginx ports: - "80:80" # 暴露端口 volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf # 挂载配置文件 - ./wwwroot:/usr/share/nginx/html # 挂载静态资源 restart: always # 自动重启 ``` 启动服务: ```bash docker-compose up -d # 引用[1] ``` --- ### 关键目录说明 | **容器内路径** | **作用** | **推荐挂载到宿主机** | |------------------------------|--------------------------|----------------------------| | `/etc/nginx/nginx.conf` | 主配置文件 | `./conf/nginx.conf` | | `/usr/share/nginx/html` | 静态资源目录(网站根目录)| `./wwwroot` | | `/etc/nginx/conf.d/` | 额外配置目录 | `./conf/conf.d/` | > 💡 **提示**: > - 首次运行时,建议先不挂载配置文件,通过 `docker cp mynginx:/etc/nginx/nginx.conf ./conf/` 复制默认配置再修改[^2]。 > - 修改配置后需重启容器:`docker restart mynginx`。 --- ### 常见问题解决 - **端口冲突**: 修改 `-p` 参数(如 `-p 8080:80`),或停止占用端口的进程[^2]。 - **配置文件错误**: 查看日志:`docker logs mynginx`。 - **无法访问服务**: 检查防火墙是否放行端口(如 `ufw allow 80`)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值