Docker部署nginx以及配置域名全过程

 更新时间:2025年11月28日 09:30:00   作者:乌托邦钢铁侠  
本文详细介绍了如何使用Docker部署Nginx,包括拉取镜像、启动容器、配置挂载、修改配置文件、重新加载配置文件以及配置域名

背景

docker 容器相关技术已经成为了现在开发和运维人员的热门技术之一,docker就像一个集装箱能够将各种应用放入到集装箱里的盒子里进行统一管理,优点是: 方便、灵活、易迁移。

此文介绍的是怎么使用docker部署nginx。

1. 拉取nginx镜像

docker pull nginx:latest

latest表示最新版的nginx, 拉取到最新版本的Nginx镜像完毕后,我们就可以通过docker images来查看是否下载完毕:

2. 启动nginx

镜像下载完毕后,我们可以就使用docker来启动一个nginx容器,启动命令如下:

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

参数解析:

  • –name: 给容器取一个别名,启动成功后会在NAMES列显示。
  • -p: 将服务器的8080端口映射到nginx容器的80端口。
  • -d: 容器将会以后台的形式来运行。

启动成功后,我们可以通过docker ps命令来查看正在运行的容器:

run一个容器后,我们可以通过Start和stop命令来重写启动或停止容器, 后面带上容器的id或者NAMES即可:

另外我们可以通过命令进入到nginx的终端,查看nginx镜像里的配置文件。

docker exec -it nginx bash

启动成功后,我们就可以访问nginx了, 如果用的是8080端口,服务器用的是阿里云,那么先要去配置一下安全组:

将8080端口加入访问的权限即可:

配置完毕后,再次访问http://116.62.146.90:8080/:

3. 通过docker修改nginx配置

挂载配置文件

在这里我使用了默认的nginx配置来启动容器, 接下来修改nginx.conf文件,这里需要我们在外部挂载一个配置文件nginx.conf来挂载容器里的nginx的配置文件,因为我们知道在docker里进入到nginx容器时,再去修改 /etc/nginx/nginx.conf文件是极其不方便的,想要在nginx容器外面去操作配置是极其不方便的,因此就有了挂载配置文件的方案。

首先在docker容器的外部新建一个/data/nginx/{conf,log,conf.d}, 其中conf目录下面为nginx的配置文件,default.conf为nginx的默认配置文件,这两个文件的内容可以先从docker容器里的nginx里拿出来,此路径需要通过指令进入到nginx容器的终端才能查看到, 另外不挂载的时候才能够进入到nginx容器的终端去查看路径。

注: 外 挂时一定需要 nginx.conf和default.conf两个文件才行,并且要保证配置内容没有出错。

nginx.conf:

default.conf:

以下这两个配置文件的路径是用docker run起来以后,我们可以在没有指定挂载的时候,进入到nginx容器终端里显示出来的路径。

文件名在nginx容器里的路径
nginx.conf/etc/nginx/conf
default.conf/etc/nginx/conf.d/default.conf

准备好如上所需要的配置文件后,我们就可以通过如下命令启动nginx容器:

docker run --name my-nginx -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-d nginx

参数解析:

  • -v: 表示的是将容器所需要的文件进行挂载, 本例中是将nginx镜像所在容器里的/etc/nginx/nginx.conf 文件挂载到 我们自定义的 /data/nginx/conf/nginx.conf 文件。
  • -d: 容器以后台的方式进行运行,关闭终端后也不停止。
  • -p: 80:80 , 将nginx容器的80端口映射到Docker的80端口。

启动成功后,通过docker ps命令查看容器是否在运行:

如果失败了,那么用docker logs 加上返回的一串字母串查看失败的日志。

重新加载配置文件

通过上述步骤,我可以将nginx的配置文件挂载到了docker容器外,然后我们只需要在外部修改 /data/nginx/conf/nginx.conf 文件即可, 修改好后需要重新启动一下容器。

docker restart my-nginx

如果在run容器出现容器已经存在,那么可以通过以下指令删除指定的容器, 后面接容器的id或者Name, 前提是要将运行中的容器先暂停:

docker stop my-nginx
docker rm   my-nginx

4. 配置我的域名

接下来,我想把我刚申请的域名配置到nginx里,这样就能够起到保护ip地址的作用,这样看起来更像是一个完整的网站。首先,刚通过阿里云申请的域名审批通过后,需要在域名控制台下做下域名解析,解析完毕后,方可使用该域名,可以在windows环境下通过ping指令来确定是否解析成功,该域名是否可以直接访问! 解析过程,添加阿里云服务器下的公网ip地址即可!

windows环境下看是否能够Ping通:

发现可以ping通之后,我们就可以开始配置域名了! 修改nginx.conf文件, 我的域名是www.zhuzhu-bingbing.cn

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    client_max_body_size 1024m;
    client_body_buffer_size 10m;
    client_header_buffer_size 10m;
    proxy_buffers 4 128k;
    proxy_busy_buffers_size 128k;

    server {
        listen       80;
        server_name  www.zhuzhu-bingbing.cn;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

         location / {
           root   /usr/share/nginx/html;
           index  index.html index.htm;
        }
        }
}

访问www.zhuzhu-bingbing.cn, 出现如下画面表示域名生效:

总结

以上步骤为docker部署nginx应用的完整流程,配置文件需要外 挂这点调试了蛮久!

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在Ubuntu上使用Docker部署DeepSeek的详细步骤

    在Ubuntu上使用Docker部署DeepSeek的详细步骤

    docker是容器化技术的代表,它能够将应用程序及其依赖项打包成一个独立的容器,在 DeepSeek 部署中,使用 docker 可以确保 deepseek - r1 在不同环境中具有一致的运行状态,本文给大家介绍了在Ubuntu上使用Docker部署DeepSeek的详细步骤,需要的朋友可以参考下
    2025-02-02
  • Docker 使用 Supervisor 来管理进程操作

    Docker 使用 Supervisor 来管理进程操作

    这篇文章主要介绍了Docker 使用 Supervisor 来管理进程操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 浅谈docker容器镜像的保存位置

    浅谈docker容器镜像的保存位置

    在使用Docker时,我们常常需要从远程仓库中拉取镜像,并将其保存到本地储存位置,本文主要介绍了浅谈docker容器镜像的保存位置,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 使用docker创建静态网站应用(多种方式)

    使用docker创建静态网站应用(多种方式)

    这篇文章主要介绍了使用docker创建静态网站应用(多种方式),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 使用Docker容器部署MongoDB并支持远程访问及遇到的坑

    使用Docker容器部署MongoDB并支持远程访问及遇到的坑

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,今天通过本文给大家介绍使用Docker容器部署MongoDB并支持远程访问及遇到的坑,感兴趣的朋友一起看看吧
    2022-07-07
  • linux环境部署及docker安装redis的方法

    linux环境部署及docker安装redis的方法

    这篇文章主要介绍了linux环境部署及docker安装redis的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Docker 教程之CentOS安装 Docker

    Docker 教程之CentOS安装 Docker

    这篇文章主要介绍了Docker 教程之CentOS安装 Docker的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker查看是否开机自启及容器自启动设置

    Docker查看是否开机自启及容器自启动设置

    Docker是当前最流行的容器技术,通过运用容器打包应用程序并部署到生产环境中,可大大提高部署的速度和可靠性,下面这篇文章主要给大家介绍了关于Docker查看是否开机自启及容器自启动设置的相关资料,需要的朋友可以参考下
    2024-01-01
  • 已有docker镜像构建过程分析(使用示例)

    已有docker镜像构建过程分析(使用示例)

    docker history命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间、创建者、大小和注释等信息,本文介绍已有docker镜像构建过程分析,感兴趣的朋友一起看看吧
    2024-12-12
  • docker-compose 搭建redis集群(三台服务器,每台服务器上一主一从)

    docker-compose 搭建redis集群(三台服务器,每台服务器上一主一从)

    本文主要介绍了Docker Compose搭建Redis集群是一种便捷高效的方法,本次搭建使用三台服务器,每台服务器上一主一从,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03

最新评论