Dokcer 部署 Nginx
...大约 2 分钟
Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异步事件模型,削减上下文调度的开销,提高服务器并发能力。采用了模块化设计,提供了丰富模块的第三方模块
本文介绍 docker 如何部署 nginx
快速开始
在 docker hub 查找镜像
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15728 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2088 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 818 [OK]
......
这里使用官方镜像,下载:
$ docker pull nginx
启动容器
$ docker container run --name my-nginx -d --rm -p 8080:80 nginx /bin/bash
24167b75db40bb32a59699f4c799b1c5009cad5853712caa7fe68ddafb85125d
--name
:指定容器名-p
: host_port:container_port,主机端口和容器端口映射--rm
:容器停止后文件自动删除
这里的docker container run
和docker run
是一样的,docker container run
为 docker 1.13 进行 CLI 重构时新增
查看容器日志:
docker logs my-nginx
在浏览器访问localhost:8080
,可以看到 nginx 的初始页面了
挂载本地文件
资源文件都放在容器里面,不方便修改,可以将本地文件挂载到容器中
在本地创建目录:
$ mkdir -p ~/nginx/app
在app
里创建一个 html 文件:
$ echo '<h1>Hello World</h1>' > index.html
启动容器,这次加上-v host_dir:container_dir
,挂载本地文件:
docker container run \
-d \
-p 8080:80 \
--rm \
--name mynginx \
--volume $PWD:/usr/share/nginx/html \
nginx
在浏览器访问localhost:8080
,可以看到 Hello World 了
拷贝配置
将容器里面的 Nginx 配置文件拷贝到本地:
$ docker container cp mynginx:/etc/nginx/ ~/nginx
名称改为conf
:
$ mv nginx conf
停止mynginx
挂载配置文件:
$ docker stop mynginx
mynginx
$ docker container run \
-d \
-p 8080:80 \
--rm \
--name mynginx \
-v $HOME/nginx/conf:/etc/nginx \
-v $HOME/nginx/app:/usr/share/nginx/html \
nginx
在浏览器访问localhost:8080
,可以看到 Hello World 了
参考
Docker 部署 nginx github repo
nginx-tutorial github repo
Nginx 容器教程 阮一峰
docker docs docker docs/docker run
What is the difference between docker run and docker container run stackoverflow
Powered by Waline v2.15.2