【Docker实操】创建一个Nginx服务

本文详细介绍了如何不使用DockerFile部署Nginx容器,以及如何利用DockerFile创建自定义镜像并进行目录映射。通过实例演示了前后台启动容器、目录映射功能以及使用DockerFile进行开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、不使用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

  1. 前台启动容器
docker run -p 8011:80 -v $PWD:/usr/share/nginx/html nginx

image-20231203152318487

  1. 后台启动容器【-d】
docker run -p 8011:80 -v $PWD:/usr/share/nginx/html -d nginx

image-20231203152515856

成功启动后,可以在使用公网IP:8011访问网站。

image-20231203152932018

5、目录映射【-v】说明

【-v】命令解释:-v $PWD:/usr/share/nginx/html

创建宿主机和虚拟机中目录映射,改变宿主机中的文件,会自动同步虚拟机中对应的文件。

还是拿上面的容器,我们尝试修改宿主机中root/www2/nginx/index.html,然后查看虚拟机中/usr/share/nginx/html/index.html是否自动做了修改,最后查看访问页面时,是否做了也同步修改了。

  1. 修改宿主机文件
echo 'hello world!->itfeiniu'>index.html//重写内容
  1. 查看虚拟机文件
docker ps 	//查看容器,找到容器id
docker exec -it b736 /bin/bash	//进入容器
cat /usr/share/nginx/html/index.html	//查看虚拟机中对应映射文件内容

image-20231203155200907

  1. 访问页面

再次访问页面,我们看到页面中内容已经更新。

image-20231203154541645

二、使用DockerFile(不使用目录映射)

1、创建源码目录

//如果当前目录在root
mkdir www2
mkdir www2/nginx2
cd www2/nginx2	//进入项目目录

2、创建Dockerfile

  1. 进入vi编辑器:vi Dockerfile

  2. 输入内容

    #Dockerfile
    FROM nginx:latest
    RUN echo '<h1>Hello, ITFeiniu!</h1>' > /usr/share/nginx/html/index.html
    
  3. 完成编辑::wq

3、自定义镜像

//定义镜像版本号,“.”点号路径
docker build -t nginx:itfeiniu .    

4、启动自定义镜像

docker run -p 8012:80 nginx:itfeiniu

image-20231203221126770

三、使用DockerFile(使用目录映射)

1、创建源码目录

//如果当前目录在root
mkdir www2
mkdir www2/nginx2
cd www2/nginx2	//进入项目目录

2、创建Dockerfile

  1. 进入vi编辑器

    vi Dockerfile
    
  2. 输入内容

    #Dockerfile
    FROM nginx:latest
    
  3. 完成编辑::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文件同步进去。

image-20231203224233111

四、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 按以下规则加载配置文件:

  1. 主配置文件 nginx.conf:首先加载主配置文件中的指令。
  2. include 指令引用的文件:按 include 指令在主配置文件中出现的顺序加载。
  3. 同名指令的覆盖规则:
    • 同一级别(如 httpserverlocation)的同名指令,后加载的会覆盖先加载的。
    • 不同级别的指令(如 http vs server)不会相互覆盖,而是嵌套生效。
  4. 按字母顺序加载 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT飞牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值