在centos7上用docker安装nginx

一、拉取nginx镜像,生成容器

docker pull nginx

 如果报这种错,就是镜像源的问题。如果没报错直接跳到第二点。

1.配置镜像源

vim /etc/docker/daemon.json

然后输入下面的内容

{
    "registry-mirrors":[
        "https://i1el1i0w.mirror.aliyuncs.com",
        "https://hub-mirror.c.163.com",
        "https://registry.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}

2.重启docker服务

重启进程

sudo systemctl daemon-reload

重启服务

sudo systemctl restart docker

然后再拉取,就成功了!

 

二、获取镜像后,来运行容器。

查镜像命令

docker images

 运行镜像生成容器命令,nginx 默认的内部端口是80,我们给映射为4043.

docker run --name=nginx -d -p 4043:80 nginx
上面命令的解释如下:
1、--name:设置容器的名称。
2、-d:表示在后台运行容器。
3、-p:指定端口映射。4043是宿主机的端口,供外部访问,80是Nginx容器内部的端口。
4、nginx:表示根据nginx镜像运行容器。
5、run 表示运行容器,如果镜像不存在,会自动调用 pull 命令拉取镜像

 

查询容器命令

docker ps

 现在就可以通过(ip+端口)访问了。

 

三、配置nginx 相关映射,映射到项目的容器、实现反向代理。

进入nginx容器中,查看nginx配置内容是什么样的。

docker exec -it nginx /bin/bash

发现root账号后面已经变了,说明已经进到容器内部了。

 我们主要是进去看他配置文件。跟着找以下目录。

接下来我们vim进去看一下这个配置文件。

 然后报错了。需要我们安装一下这个vim源。

apt-get update    --先更新来源

apt-get install -y vim   --安装 vim

再用vim命令进到nginx.conf 文件中看配置

 看箭头位置,表示默认读取的是这个conf.d这个目录下的文件进行的配置。

那么我们进去看看这个目录下是什么

 其实所谓的映射 挂载的目的,就是为了让 容器内的目录或者文件跟 服务器上的本地文件或目录互相同步数据。

 那么我们在服务器root目录下创建nginx需要用到的一些文件存储目录,用作服务跟nginx的映射数据。

 

退出我们当前所在的容器。exit

执行命令,创建三个文件夹。www、logs、conf

mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf

接下来 查看一下nginx容器id是多少。

 

将nginx容器中  conf.d目录下的配置文件 拷贝到本地。cp是拷贝命令

 

docker cp 容器ID:/etc/nginx/conf.d/default.conf /root/nginx/conf

 

 

需要给netcore容器配置反向代理,要知道core项目容器的 地址。

 

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名 or 容器Id

 

 

 这个172.17.0.2,这个IP是docker 容器内的ip  如果用docker的方式 就要用这个ip去配置下面的内容。

  然后使用vim命令编辑 default.conf 文件(这个目录下:/root/nginx/conf),将文件内容设置如下:

server{
    listen 7744;
    charset utf-8;
    server_name 172.17.0.2;

    location / {
       proxy_pass http://172.17.0.2:9527;
       proxy_redirect default;
    }
}

解析:

server{
    listen 7744;   //这个是监听端口
    charset utf-8;
    server_name 172.17.0.2;  //这个ip就是你发布的容器项目的ip

    location / {
       proxy_pass http://172.17.0.2:9527; 这个是你发布的项目容器的内部端口
       proxy_redirect default;
    }
}

 

然后创建一个新的nginx容器,将www,logs,conf,文件映射到你刚刚建的目录。

4030这个端口就是你访问的端口。7744是你发布的项目的docker内部端口。

docker run -d -p 4030:7744 --name nginxapi \
-v /root/nginx/www:/usr/share/nginx/html \
-v /root/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \
-v /root/nginx/logs:/var/log/nginx \
nginx

 

 参考:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) - 找.net工作(北京) - 博客园 (cnblogs.com)

参考:Docker教程:使用Docker容器运行Nginx并实现反向代理 - .NET开发菜鸟 - 博客园 (cnblogs.com)

posted @ 2024-06-24 16:57  路边有一棵草  阅读(223)  评论(0编辑  收藏  举报