一、不使用DockerFile
1、获取nginx官方镜像
docker pull nginx //拉取nginx官方镜像
docker image nginx //查看镜像
2、创建项目目录
项目目录:/root/www2/nginx
//如果当前目录在root
mkdir www2
mkdir www2/nginx
cd www2/nginx //进入项目目录
3、创建源码文件
//当前目录:/root/www2/nginx
//1、方案一:在当前目录下创建
echo 'hello docker!!' >> index.html
//2、方案一:在指定目录web下创建
mkdir web
echo 'hello docker!!' >> web/index.html
//3、使用vi编辑器创建
vi index.html //进入vi编辑器
//进入insert模式,输入内容后,esc+【wq】保存并退出
4、创建并启动容器
当前目录:/root/www2/nginx
- 前台启动容器
docker run -p 8011:80 -v $PWD:/usr/share/nginx/html nginx
- 后台启动容器【-d】
docker run -p 8011:80 -v $PWD:/usr/share/nginx/html -d nginx
成功启动后,可以在使用公网IP:8011
访问网站。
5、目录映射【-v】说明
【-v】命令解释:-v $PWD:/usr/share/nginx/html
创建宿主机和虚拟机中目录映射,改变宿主机中的文件,会自动同步虚拟机中对应的文件。
还是拿上面的容器,我们尝试修改宿主机中root/www2/nginx/index.html
,然后查看虚拟机中/usr/share/nginx/html/index.html
是否自动做了修改,最后查看访问页面时,是否做了也同步修改了。
- 修改宿主机文件
echo 'hello world!->itfeiniu'>index.html//重写内容
- 查看虚拟机文件
docker ps //查看容器,找到容器id
docker exec -it b736 /bin/bash //进入容器
cat /usr/share/nginx/html/index.html //查看虚拟机中对应映射文件内容
- 访问页面
再次访问页面,我们看到页面中内容已经更新。
二、使用DockerFile(不使用目录映射)
1、创建源码目录
//如果当前目录在root
mkdir www2
mkdir www2/nginx2
cd www2/nginx2 //进入项目目录
2、创建Dockerfile
-
进入vi编辑器:
vi Dockerfile
-
输入内容
#Dockerfile FROM nginx:latest RUN echo '<h1>Hello, ITFeiniu!</h1>' > /usr/share/nginx/html/index.html
-
完成编辑:
:wq
3、自定义镜像
//定义镜像版本号,“.”点号路径
docker build -t nginx:itfeiniu .
4、启动自定义镜像
docker run -p 8012:80 nginx:itfeiniu
三、使用DockerFile(使用目录映射)
1、创建源码目录
//如果当前目录在root
mkdir www2
mkdir www2/nginx2
cd www2/nginx2 //进入项目目录
2、创建Dockerfile
-
进入vi编辑器
vi Dockerfile
-
输入内容
#Dockerfile FROM nginx:latest
-
完成编辑:
:wq
3、自定义镜像
//定义镜像版本号,“.”点号路径
docker build -t nginx:itfeiniu .
4、创建index.html
进入宿主机www2/nginx2
目录:
echo 'ITfeiniu' > index.html
5、启动自定义镜像
docker run -p 8012:80 -v $PWD:/usr/share/nginx/html -d nginx:itfeiniu
# docker run -p 8012:80 -v $PWD:/usr/share/nginx/html -v $PWD/conf.d:/etc/nginx/conf.d -d nginx:itfeiniu
# docker run -p 8012:80 -p 3001:3001 -p 3002:3002 -v $PWD:/usr/share/nginx/html -v $PWD/conf.d:/etc/nginx/conf.d -d nginx:itfeiniu
容器虚拟机中会自动将外部创建的index.html
文件同步进去。
四、Nginx常用命令
详细参考:Nginx中文网
nginx 及其模块的工作方式是在配置文件中确定的。默认情况下,配置文件被命名nginx.conf
并放置在目录 /usr/local/nginx/conf
、 /etc/nginx
或 中/usr/local/etc/nginx
。
1、服务器配置
配置文件文职可能是在/etc/nginx/conf.d/default.conf
,具体可以查看nginx.conf
中,指定的配置文件路径:
Nginx 按以下规则加载配置文件:
- 主配置文件
nginx.conf
:首先加载主配置文件中的指令。 include
指令引用的文件:按include
指令在主配置文件中出现的顺序加载。- 同名指令的覆盖规则:
- 同一级别(如
http
、server
、location
)的同名指令,后加载的会覆盖先加载的。 - 不同级别的指令(如
http
vsserver
)不会相互覆盖,而是嵌套生效。
- 同一级别(如
- 按字母顺序加载
conf.d
目录下的所有文件。
常见的配置文件组织方式
方式一:按功能拆分(推荐)
/etc/nginx/
├── nginx.conf # 主配置
├── conf.d/ # 按功能拆分的配置
│ ├── proxy.conf # 代理相关设置
│ ├── security.conf # 安全相关设置
│ └── ...
└── sites-enabled/ # 虚拟主机配置
├── example.com.conf # 网站1配置
└── blog.conf # 网站2配置
方式二:按虚拟主机拆分
/etc/nginx/
├── nginx.conf
└── sites-enabled/
├── example.com/ # 网站1的独立目录
│ ├── server.conf # 服务器配置
│ └── location.conf # 路径配置
└── blog/ # 网站2的独立目录
├── server.conf
└── location.conf
验证配置文件的加载
测试配置语法:nginx -t
。(输出会显示 Nginx 加载的所有配置文件路径)
2、启动、停止和重新加载配置
要启动 nginx,请运行可执行文件。一旦nginx启动,就可以通过带-s
参数调用可执行文件来控制它。使用以下语法:nginx -s signal
。
其中信号可能是以下之一:
nginx -s stop — 快速关闭
nginx -s quit — 优雅关闭
nginx -s reload — 重新加载配置文件
nginx -s reopen — 重新打开日志文件
例如,要停止 nginx 进程并等待工作进程完成当前请求的服务,可以执行以下命令:nginx -s quit
3、查看日志
首先需要知道Nginx访问日志的存放位置,通常在以下路径之一:
/var/log/nginx/access.log (Linux常见位置)
/usr/local/nginx/logs/access.log
具体路径可在Nginx配置文件中查看:grep access_log /etc/nginx/nginx.conf
使用cat命令查看全部内容
cat /var/log/nginx/access.log
使用tail查看最新日志
tail -f /var/log/nginx/access.log # 实时查看最新日志
tail -100 /var/log/nginx/access.log # 查看最后100行
使用less分页查看
less /var/log/nginx/access.log