【愚公系列】2023年08月 Docker容器 Nginx的搭建


前言

Docker是一种虚拟化容器技术,可以将应用程序和其依赖的库、配置文件等打包成一个容器,进行分发部署。而Kubernetes (k8s) 是一个开源的容器编排平台,可以自动化部署、扩展和管理容器化应用程序。

Docker和Kubernetes (k8s) 的关系是:Docker提供了容器化技术,而Kubernetes (k8s) 则是在Docker的基础上构建的容器编排平台。也就是说,k8s是一个管理Docker容器的工具,它可以自动化地管理大规模容器化应用程序的部署、更新和扩展,提供高可用性、自动化管理、弹性伸缩等特性,可以帮助开发人员更加便捷地进行容器化应用程序的开发和运维。

使用Docker部署服务的便捷性主要体现在以下几个方面:

  1. 快速部署:Docker打包后的容器可以在任何支持Docker的机器上快速部署,无需额外的配置和调整,大大节省了部署时间。

  2. 跨平台:Docker容器可以在不同的操作系统和平台上运行,无需对应不同的操作系统和平台进行部署。

  3. 环境隔离:Docker容器可以将应用程序和其依赖的库、配置文件等打包在一起,并且与宿主机器隔离,这样可以避免应用程序之间的冲突和环境的混乱。

  4. 便于管理:Docker容器可以通过Docker Hub等集中式仓库管理,可以方便地分享和管理容器,同时也可以通过Docker命令行工具进行快速管理和操作。

  5. 弹性伸缩:Docker容器可以快速实现应用程序的扩容和缩容,提高了应用程序的可伸缩性和弹性。

Nginx做为常用的服务器之一部署在Docker是很常见的,下面会介绍Docker部署Nginx的流程。

扫描二维码关注公众号,回复: 16398595 查看本文章

一、Nginx的搭建

1.Nginx的种类

Nginx和NGINX Plus都是广泛使用的开源Web服务器和反向代理软件。它们的主要区别在于功能和许可证。

Nginx是一个免费的开源软件,提供基本的Web服务器和反向代理功能,可以在Linux、Unix、Windows等操作系统上安装和运行。Nginx还可用于负载均衡、HTTP缓存、SSL终止和减少服务器压力等。

NGINX Plus是Nginx的商业版本,提供更多的高级功能和支持服务。它包括流控制、弹性负载均衡、Docker和Kubernetes集成、API网关、Web应用程序防火墙、实时指标、应用程序诊断和其他管理和监控工具。

NGINX Plus还提供支持计划、修补程序、故障排除、优化建议和性能保障等服务。

2.Nginx的安装

2.1 Windows下的Nginx的安装

以下是在Windows中安装Nginx的步骤:

  1. 下载并安装Docker Desktop for Windows,官方网址:https://www.docker.com/products/docker-desktop
    在这里插入图片描述

  2. 在Docker Desktop中打开终端窗口,并从Docker Hub上下载Nginx镜像:

    docker pull nginx:latest
    

    在这里插入图片描述

  3. 使用以下命令启动Nginx容器:

    docker run --name my-nginx -p 80:80 -d nginx
    

    在这里插入图片描述

    这个命令将在后台启动一个名为my-nginx的容器,并将容器的80端口映射到主机的80端口。您可以使用以下命令验证是否成功启动了容器:

    docker ps
    

    在这里插入图片描述

  4. 在Web浏览器中输入以下URL以验证Nginx是否正在运行:

    http://localhost/
    

    在这里插入图片描述

    如果您可以看到Nginx的欢迎页面,那么您已经成功地在Windows中安装了Nginx。

2.2 配置文件的读取方式

要打开一个 Docker 容器的交互式 shell,您可以使用以下命令:

docker exec -it <容器名称或ID> /bin/bash

这将在一个运行的 Docker 容器中打开一个交互式 shell,您可以使用所需的操作系统命令和工具来与容器进行交互。请注意,您需要在 Docker 主机上拥有相应的权限才能运行此命令。

2.2.1 在Docker容器内维护Nginx的内容和配置

在Docker宿主机上维护Nginx的内容和配置,可以按照以下步骤进行:

  1. 找到Nginx容器的ID或名称,可以使用以下命令查看正在运行的Docker容器列表:

    docker ps
    
  2. 进入Nginx容器,可以使用以下命令进入容器:

    docker exec -it <nginx_container_id_or_name> bash
    
  3. 在容器中修改Nginx的配置,根据实际情况修改Nginx的配置文件,例如:

    vi /etc/nginx/nginx.conf
    
  4. 修改完成后,重启Nginx服务,可以使用以下命令重启:

    nginx -s reload
    
  5. 退出容器,返回到Docker宿主机维护Nginx的内容和配置。

    exit
    

通过以上步骤,可以在Docker宿主机上维护Nginx的内容和配置。同时需要注意的是,如果是在Docker容器中使用Nginx,则可以通过在Dockerfile中定义COPY命令,将宿主机中的Nginx配置文件或内容复制到容器中,并在容器中启动Nginx服务。
在这里插入图片描述
记住docker容器默认是没vi编辑器的需要自己安装,所以不建议这种方式去运行。

2.2.2 在Docker容器外维护Nginx的内容和配置

在创建容器时,我们可以指示 Docker 将 本地主机上的本地目录挂载到容器的目录中,命令如下:

docker run --name my-nginx  --mount type=bind source=/var/www,target=/usr/share/nginx/html,readonly --mount type=bind,source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx

Docker 宿主机本地目录 /var/www 和 /var/nginx/conf 中的文件所做的任何更改都将在容器目录 /usr/share/nginx/html 和 /etc/nginx 中体现。readonly 选项意味着这些目录仅可以在 Docker 宿主机上更改,而不能在容器内更改。

2.2.3 在Docker容器外维护Nginx的内容和配置(辅助容器)

html内容位于 content 目录,配置文件位于 conf 目录,这两个目录都是 Dockerfile 所在目录的子目录。NGINX 镜像包含了默认的 NGINX 配置文件 /etc/nginx/nginx.conf 和 /etc/nginx/conf.d/default.conf。我们想要使用来自宿主机的配置文件,因此我们添加了一个 RUN 命令来删除默认文件:

Dockerfile文件内容

FROM nginx
RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY content /usr/share/nginx/html
COPY conf /etc/nginx
VOLUME /usr/share/nginx/html
VOLUME /etc/nginx

在Dockerfile文件目录运行

docker build -t mynginx_image2 .
docker run --name mynginx4 -p 80:80 -d mynginx_image2
docker run -i -t --volumes-from mynginx4 --name mynginx4_files debian /bin/bash

新的 mynginx4_files 辅助容器在前台运行,并提供持久化的标准输入(-i 选项)和 tty(-t 选项)。mynginx4 中定义的所有数据卷都作为本地目录挂载到辅助容器中。

如要启动和终止容器,请运行以下命令:

docker start mynginx4_files
docker stop mynginx4_files

如要退出 shell 但不终止容器的运行,请按 Ctrl+p,然后按 Ctrl+q。如要重新获得对正在运行的容器的 shell 访问权限,请运行以下命令:

docker attach mynginx4_files

如要退出 shell 并终止容器,请运行 exit 命令。

2.3 日志和外部控制

2.3.1 默认日志

默认情况下,NGINX 镜像被配置为将主要的 NGINX 访问日志和错误日志发送到 Docker 日志收集器。方法是将它们分别链接到 stdout (访问日志)和 stderr(错误日志);然后,两个日志的所有信息都会被写入 Docker 宿主机上的文件 /var/lib/docker/containers/container-ID/container-ID-json.log,其中 container‑ID 是创建容器时返回的长格式 ID。

查看日志的命令:

docker logs container-name

在这里插入图片描述
或者可以这样查看日志

curl --unix-socket /var/run/docker-sock http://localhost/containers/container-name/logs?stdout=1&stderr=1

在这里插入图片描述

2.3.2 自定义日志

FROM nginx
RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
COPY content /usr/share/nginx/html
COPY conf /etc/nginx
VOLUME /var/log/nginx/log

创建一个 NGINX 容器和一个用来访问日志目录的辅助容器。这个辅助容器可以安装任何所需的日志记录工具。

2.3.3 外部控制

docker kill -s HUP container-name
docker restart container-name

可以使用 signals 控制 NGINX,并且 Docker 提供了 kill 命令来向容器发送信号

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/132528568
今日推荐