docker部署nginx

2023-12-14 19:15:06

(1)获取nginx镜像

1、查看nginx版本

  • 1、选择版本,可以去docker hub,搜索```nginx``
    在这里插入图片描述

? 点击tags,可以看到历史版本

在这里插入图片描述

  • 2、或通过命令查看Nginx镜像
docker search nginx

输出:

NAME                               DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                         19341     [OK]       
unit                               Official build of NGINX Unit: Universal Web …   19        [OK]       
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                   138       

(2)下载Nginx镜像

使用命令docker pull nginx默认为下载最新版(latest)

docker pull nginx

也可以下载指定版本1.20.1

docker pull nginx:1.20.1

查看下载到本地的镜像文件

docker images

(3)启动nginx容器(简单版)

创建一个名为 “nginx” 的容器,并将容器内的端口 80 映射到主机的端口 8080。

格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

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

这个命令的缺陷主要有以下几点:

  1. 缺乏挂载卷:该命令没有使用 -v 参数来挂载容器内的数据卷或文件。这意味着容器内的数据(例如网站文件、日志文件等)将无法持久化保存。当容器被删除或重新创建时,所有的数据都会丢失。
  2. 缺少自定义配置:该命令没有提供自定义的 Nginx 配置文件。默认情况下,Nginx 容器将使用其内部的默认配置。如果你需要自定义 Nginx 的配置,例如修改虚拟主机或代理设置等,你需要编辑容器内的配置文件,或者使用挂载卷将自定义的配置文件传递给容器。
  3. 缺少容器重启策略:该命令没有指定容器的重启策略。默认情况下,容器在退出时不会自动重启。如果你希望容器在发生故障或主机重启后自动重启,你可以使用 --restart 参数来设置适当的重启策略。
  4. 使用最新的 Nginx 镜像:该命令使用的是 nginx 镜像,但没有指定具体的版本号。默认情况下,Docker 将使用最新的可用版本。这意味着在将来重新创建容器时,可能会使用一个不同的版本,导致行为和配置的变化。

(4)启动nginx容器(实际应用版)

1、创建挂载目录

mkdir -p /data/docker/nginx/conf
mkdir -p /data/docker/nginx/log
mkdir -p /data/docker/nginx/html

2、关于容器与主机之间互传文件

(1)将上面创建简单版nginx容器文件,拷贝到主机,命令格式:docker cp 【容器id】:容器目录 本地目录

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/docker/nginx/conf/nginx.conf

# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/docker/nginx/conf/conf.d

# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/
  • docker cp:用于在容器和主机之间复制文件或目录的命令。
  • nginx:/etc/nginx/nginx.conf:指定了容器内的文件路径,这里是容器名为 “nginx” 的容器中的 /etc/nginx/nginx.conf 文件。
  • /data/docker/nginx/conf/nginx.conf:指定了主机上的目标文件路径,这里是将文件复制到 /data/docker/nginx/conf/nginx.conf

PS:以下这条命令不用执行,只是作为备注如何传输文件

3、将主机文件拷贝到容器目录,格式:docker cp 本地目录 【容器id】:容器目录

#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  【容器id】:/etc/nginx/nginx.conf
  • /data/conf/nginx.conf:指定了主机上的源文件路径,这里是将主机上的 /data/conf/nginx.conf 文件复制到容器内。
  • 【容器id】:/etc/nginx/nginx.conf:指定了容器内的目标文件路径,这里是容器的 ID(或名称)为 【容器id】 的容器中的 /etc/nginx/nginx.conf 文件。

本命令跳过,执行以下命令。

4、启动容器命令:

docker run -d -p 8090:80 \
-v /data/docker/nginx/html:/usr/share/nginx/html:ro \
-v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/docker/nginx/log:/var/log/nginx \
--restart=always \
--name mynginx-02 \
nginx

启动容器命令的详细解释:

  • docker run:运行一个新的容器。
  • -d:以后台模式运行容器。
  • -p 8090:80:将容器内的端口 80 映射到主机的端口 8090。这样可以通过主机的端口访问 Nginx 服务。
  • -v /data/docker/nginx/html:/usr/share/nginx/html:ro:使用卷挂载功能,将本地目录 /data/docker/nginx/html 挂载到容器内的 /usr/share/nginx/html 目录,并设置为只读(ro)。这样可以将自定义的 HTML 文件挂载到 Nginx 容器,用于网站内容的展示。
  • -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:使用卷挂载功能,将本地文件 /data/docker/nginx/conf/nginx.conf 挂载到容器内的 /etc/nginx/nginx.conf 文件。这样可以使用自定义的 Nginx 配置文件。
  • -v /data/docker/nginx/conf/conf.d:/etc/nginx/conf.d:使用卷挂载功能,将本地目录 /data/docker/nginx/conf/conf.d 挂载到容器内的 /etc/nginx/conf.d 目录。这样可以挂载自定义的 Nginx 配置文件片段。
  • -v /data/docker/nginx/log:/var/log/nginx:使用卷挂载功能,将本地目录 /data/docker/nginx/log 挂载到容器内的 /var/log/nginx 目录。这样可以将 Nginx 的日志文件存储到本地目录。
  • --restart=always:设置容器在退出时自动重启。
  • --name mynginx-02:为容器指定一个名称,这里是 “mynginx-02”。
  • nginx:基于 Nginx 镜像运行容器。

5、访问测试

写入一个html文件,访问测试

[root@localhost ~]# vim /data/docker/nginx/html/index.html

写入:

Hello world

输入IP+端口访问:http://你的IP:端口/

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_39689711/article/details/134931597
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。