Linux Docker 安装 Nginx 反向代理 负载均衡

1、Nginx 搜索,下载,查看

# 搜索 nginx 镜像
docker search nginx

# 下载 nginx 镜像
docker pull nginx

# 查看所有镜像
docker images

2、新建 Nginx 配置文件夹,准备挂载文件

mkdir -p /home/20221125/mynginx/conf
mkdir -p /home/20221125/mynginx/log
mkdir -p /home/20221125/mynginx/html
mkdir -p /home/20221125/mynginx/www
mkdir -p /home/20221125/mynginx/{conf,log,html,www}

mkdir -p /home/20221125/mynginx/conf && cd /home/20221125/mynginx
pwd

3、生成容器

# 生成容器
docker run --name nginx -p 9001:80 -d nginx

# 容器IP地址
docker inspect nginx

# 查看容器IP地址
docker inspect nginx | grep 'IPAddress'

# 查看容器 hostname、ip地址、环境变量
docker exec nginx hostname
docker exec nginx ip addr
docker exec nginx env

# 进入容器
docker exec -it nginx /bin/bash
docker exec -it nginx bash

4、容器文件 复制到 宿主机,把容器文件复制到刚才创建的文件夹中

# 容器文件 复制到 宿主机
docker cp <容器路径> <宿主机路径>

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

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

# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/20221125/mynginx/

5、删除刚才创建的 nginx 容器

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a

# 关闭该容器
docker stop nginx

# 删除该容器
docker rm nginx

# 删除正在运行的nginx容器
docker rm -f nginx

# 停止和删除容器
docker stop nginx && docker rm nginx

6、生成容器 并且 创建挂载【执行成功】

docker run \
-p 8086:80 \
--name first_nginx \
-v /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/20221125/mynginx/log:/var/log/nginx \
-v /home/20221125/mynginx/html:/usr/share/nginx/html \
-d nginx:latest

# 参数说明
-v 宿主机路径:容器路径
-v 本地宿主机目录:容器目录

# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash

单行模式,生成容器 并且 创建挂载【执行成功】

docker run -p 8086:80 --name first_nginx -v /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d -v /home/20221125/mynginx/log:/var/log/nginx -v /home/20221125/mynginx/html:/usr/share/nginx/html -d nginx:latest

# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash

7、查看容器IP地址

# 查看容器IP地址
docker inspect first_nginx
# "IPAddress": "172.17.0.2"

# 查看容器IP地址
docker inspect first_nginx | grep 'IPAddress'

# 查看容器 hostname、ip地址、环境变量
docker exec first_nginx hostname
docker exec first_nginx ip addr
docker exec first_nginx env

# 进入容器
docker exec -it first_nginx /bin/bash
docker exec -it first_nginx bash

# 停止和删除容器
docker stop first_nginx && docker rm first_nginx

8、检查是否安装成功

dokcer ps

curl 127.0.0.1:8086

# 打开浏览器,地址栏输入 http://localhost:8086/

9、修改 /home/20221125/mynginx/html/index.html 页面文件,随便修改点内容,重启容器

# 跳转目录
cd /home/20221125/mynginx/html

# 编辑文件
vim index.html

# 输入字母【i】切换到编辑模式,随便修改点内容
# 按Esc键,回到命令模式
# 输入【:wq】保存退出

# 重启容器
docker restart first_nginx

curl 127.0.0.1:8086

10、Nginx 反向代理,修改 /home/20221125/mynginx/conf/conf.d/default.conf 配置文件

# 跳转目录
cd /home/20221125/mynginx/conf/conf.d
# 编辑文件
vim default.conf
# 输入字母【i】切换到编辑模式,修改如下

server {
    location / {
        proxy_pass http://172.17.0.3:80;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

# 172.17.0.3:80 信息说明
# 172.17.0.3 是容器IP地址
# 80 是容器端口

# 按Esc键,回到命令模式
# 输入【:wq】保存退出

# 重启容器
docker restart first_nginx

11、Nginx 负载均衡,修改 /home/20221125/mynginx/conf/conf.d/default.conf 配置文件

# 跳转目录
cd /home/20221125/mynginx/conf/conf.d
# 编辑文件
vim default.conf
# 输入字母【i】切换到编辑模式,修改如下

upstream docker_http {
        server 172.17.0.3:80 weight=1;
        server 172.17.0.4:80 weight=1;
        server 172.17.0.5:80 weight=1;
}
server {
    location / {
        proxy_pass http://docker_http;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

# 172.17.0.3:80 信息说明
# 172.17.0.3 是容器IP地址
# 172.17.0.4 是容器IP地址
# 172.17.0.5 是容器IP地址
# 80 是容器端口

# 按Esc键,回到命令模式
# 输入【:wq】保存退出

# 重启容器
docker restart first_nginx

12、总结

# nginx 配置文件目录 /etc/nginx
cd /etc/nginx
ls -l

# nginx 默认首页 html 文件目录 /usr/share/nginx/html
cd /usr/share/nginx/html
ls -l

# nginx 日志文件目录 /var/log/nginx
cd /var/log/nginx
ls -l

# 退出容器
exit

13、Docker 部署网址,ASP.NET Core Docker 部署 Dockerfile 

# Step 1: 把源码拷贝到Linux服务器【/home/king/20221125/DockerProject】目录

# Step 2: 把Dockerfile拷贝到Linux服务器【/home/king/20221125/DockerProject/Dockerfile】目录

# Step 3: 跳转到部署文件的根目录
cd /home/king/20221125/DockerProject

# Step 4: 执行 build 命令,生成一个镜像文件,镜像名称叫做【net3v1125:2221】
docker build -t net3v1125:2221 -f Dockerfile .

# Step 5: 执行 run 命令,创建并运行容器,注意上边的镜像名称使用的是【net3v1125:2221】
docker run -itd -p 8081:80 --name docker8081 net3v1125:2221
docker run -itd -p 8082:80 --name docker8082 net3v1125:2221
docker run -itd -p 8083:80 --name docker8083 net3v1125:2221

# Step 6: 查看容器IP地址
docker inspect first_nginx
docker inspect docker8081
docker inspect docker8082
docker inspect docker8083

# Step 7: 获取容器 hostname、ip地址、环境变量
docker exec first_nginx hostname
docker exec first_nginx ip addr
docker exec first_nginx env

数据包转发

# 跳转目录
cd /usr/lib/sysctl.d
 
# 查看文件
cat /usr/lib/sysctl.d/50-default.conf
 
# 编辑文件
vim /usr/lib/sysctl.d/50-default.conf
 
# 末尾添加内容
net.ipv4.ip_forward = 1
 
# 重启network
systemctl restart network

防火墙、开放端口

# 查看防火墙状态
systemctl status firewalld
或
firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙(慎用)
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开放指定端口
firewall-cmd --zone=public --add-port=8067/tcp --permanent
firewall-cmd --zone=public --add-port=9002/tcp --permanent
# 关闭指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 立即生效
firewall-cmd --reload
# 查看开放的端口
firewall-cmd --zone=public --list-ports

docker-compose

# Step 1: 创建 docker-compose.yml 文件
cd /home/20221125/mynginx
vim docker-compose.yml

# Step 2: 编辑内容如下
version: "3.0"
services:
  nginxServer:
    image: nginx
    container_name: first_nginx
    restart: always
    privileged: true
    ports:
      - 8086:80
      - 80:80
      - 443:443
    volumes:
      - /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d
      - /home/20221125/mynginx/log:/var/log/nginx
      - /home/20221125/mynginx/html:/usr/share/nginx/html

# Step 3: 执行命令
docker-compose up -d

*
*
*

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值