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


    1、Nginx 搜索,下载,查看

    1. # 搜索 nginx 镜像
    2. docker search nginx
    3. # 下载 nginx 镜像
    4. docker pull nginx
    5. # 查看所有镜像
    6. docker images

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

    1. mkdir -p /home/20221125/mynginx/conf
    2. mkdir -p /home/20221125/mynginx/log
    3. mkdir -p /home/20221125/mynginx/html
    4. mkdir -p /home/20221125/mynginx/www
    5. mkdir -p /home/20221125/mynginx/{conf,log,html,www}
    6. mkdir -p /home/20221125/mynginx/conf && cd /home/20221125/mynginx
    7. pwd

    3、生成容器

    1. # 生成容器
    2. docker run --name nginx -p 9001:80 -d nginx
    3. # 容器IP地址
    4. docker inspect nginx
    5. # 查看容器IP地址
    6. docker inspect nginx | grep 'IPAddress'
    7. # 查看容器 hostname、ip地址、环境变量
    8. docker exec nginx hostname
    9. docker exec nginx ip addr
    10. docker exec nginx env
    11. # 进入容器
    12. docker exec -it nginx /bin/bash
    13. docker exec -it nginx bash

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

    1. # 容器文件 复制到 宿主机
    2. docker cp <容器路径> <宿主机路径>
    3. # 将容器nginx.conf文件复制到宿主机
    4. docker cp nginx:/etc/nginx/nginx.conf /home/20221125/mynginx/conf/nginx.conf
    5. # 将容器conf.d文件夹下内容复制到宿主机
    6. docker cp nginx:/etc/nginx/conf.d /home/20221125/mynginx/conf/conf.d
    7. # 将容器中的html文件夹复制到宿主机
    8. docker cp nginx:/usr/share/nginx/html /home/20221125/mynginx/

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

    1. # 直接执行docker rm nginx或者以容器id方式关闭容器
    2. # 找到nginx对应的容器id
    3. docker ps -a
    4. # 关闭该容器
    5. docker stop nginx
    6. # 删除该容器
    7. docker rm nginx
    8. # 删除正在运行的nginx容器
    9. docker rm -f nginx
    10. # 停止和删除容器
    11. docker stop nginx && docker rm nginx

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

    1. docker run \
    2. -p 8086:80 \
    3. --name first_nginx \
    4. -v /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    5. -v /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d \
    6. -v /home/20221125/mynginx/log:/var/log/nginx \
    7. -v /home/20221125/mynginx/html:/usr/share/nginx/html \
    8. -d nginx:latest
    9. # 参数说明
    10. -v 宿主机路径:容器路径
    11. -v 本地宿主机目录:容器目录
    12. # 进入容器
    13. docker exec -it first_nginx /bin/bash
    14. docker exec -it first_nginx bash

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

    1. 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
    2. # 进入容器
    3. docker exec -it first_nginx /bin/bash
    4. docker exec -it first_nginx bash

    7、查看容器IP地址

    1. # 查看容器IP地址
    2. docker inspect first_nginx
    3. # "IPAddress": "172.17.0.2"
    4. # 查看容器IP地址
    5. docker inspect first_nginx | grep 'IPAddress'
    6. # 查看容器 hostname、ip地址、环境变量
    7. docker exec first_nginx hostname
    8. docker exec first_nginx ip addr
    9. docker exec first_nginx env
    10. # 进入容器
    11. docker exec -it first_nginx /bin/bash
    12. docker exec -it first_nginx bash
    13. # 停止和删除容器
    14. docker stop first_nginx && docker rm first_nginx

    8、检查是否安装成功

    1. dokcer ps
    2. curl 127.0.0.1:8086
    3. # 打开浏览器,地址栏输入 http://localhost:8086/

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

    1. # 跳转目录
    2. cd /home/20221125/mynginx/html
    3. # 编辑文件
    4. vim index.html
    5. # 输入字母【i】切换到编辑模式,随便修改点内容
    6. # 按Esc键,回到命令模式
    7. # 输入【:wq】保存退出
    8. # 重启容器
    9. docker restart first_nginx
    10. curl 127.0.0.1:8086

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

    1. # 跳转目录
    2. cd /home/20221125/mynginx/conf/conf.d
    3. # 编辑文件
    4. vim default.conf
    5. # 输入字母【i】切换到编辑模式,修改如下
    6. server {
    7.     location / {
    8.         proxy_pass http://172.17.0.3:80;
    9.         root   /usr/share/nginx/html;
    10.         index  index.html index.htm;
    11.     }
    12. }
    13. # 172.17.0.3:80 信息说明
    14. # 172.17.0.3 是容器IP地址
    15. # 80 是容器端口
    16. # 按Esc键,回到命令模式
    17. # 输入【:wq】保存退出
    18. # 重启容器
    19. docker restart first_nginx

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

    1. # 跳转目录
    2. cd /home/20221125/mynginx/conf/conf.d
    3. # 编辑文件
    4. vim default.conf
    5. # 输入字母【i】切换到编辑模式,修改如下
    6. upstream docker_http {
    7.         server 172.17.0.3:80 weight=1;
    8.         server 172.17.0.4:80 weight=1;
    9.         server 172.17.0.5:80 weight=1;
    10. }
    11. server {
    12.     location / {
    13.         proxy_pass http://docker_http;
    14.         root   /usr/share/nginx/html;
    15.         index  index.html index.htm;
    16.     }
    17. }
    18. # 172.17.0.3:80 信息说明
    19. # 172.17.0.3 是容器IP地址
    20. # 172.17.0.4 是容器IP地址
    21. # 172.17.0.5 是容器IP地址
    22. # 80 是容器端口
    23. # 按Esc键,回到命令模式
    24. # 输入【:wq】保存退出
    25. # 重启容器
    26. docker restart first_nginx

    12、总结

    1. # nginx 配置文件目录 /etc/nginx
    2. cd /etc/nginx
    3. ls -l
    4. # nginx 默认首页 html 文件目录 /usr/share/nginx/html
    5. cd /usr/share/nginx/html
    6. ls -l
    7. # nginx 日志文件目录 /var/log/nginx
    8. cd /var/log/nginx
    9. ls -l
    10. # 退出容器
    11. exit

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

    1. # Step 1: 把源码拷贝到Linux服务器【/home/king/20221125/DockerProject】目录
    2. # Step 2: 把Dockerfile拷贝到Linux服务器【/home/king/20221125/DockerProject/Dockerfile】目录
    3. # Step 3: 跳转到部署文件的根目录
    4. cd /home/king/20221125/DockerProject
    5. # Step 4: 执行 build 命令,生成一个镜像文件,镜像名称叫做【net3v1125:2221】
    6. docker build -t net3v1125:2221 -f Dockerfile .
    7. # Step 5: 执行 run 命令,创建并运行容器,注意上边的镜像名称使用的是【net3v1125:2221】
    8. docker run -itd -p 8081:80 --name docker8081 net3v1125:2221
    9. docker run -itd -p 8082:80 --name docker8082 net3v1125:2221
    10. docker run -itd -p 8083:80 --name docker8083 net3v1125:2221
    11. # Step 6: 查看容器IP地址
    12. docker inspect first_nginx
    13. docker inspect docker8081
    14. docker inspect docker8082
    15. docker inspect docker8083
    16. # Step 7: 获取容器 hostname、ip地址、环境变量
    17. docker exec first_nginx hostname
    18. docker exec first_nginx ip addr
    19. docker exec first_nginx env

    数据包转发

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

    防火墙、开放端口

    1. # 查看防火墙状态
    2. systemctl status firewalld
    3. firewall-cmd --state
    4. # 暂时关闭防火墙
    5. systemctl stop firewalld
    6. # 永久关闭防火墙(慎用)
    7. systemctl disable firewalld
    8. # 开启防火墙
    9. systemctl start firewalld
    10. # 开放指定端口
    11. firewall-cmd --zone=public --add-port=8067/tcp --permanent
    12. firewall-cmd --zone=public --add-port=9002/tcp --permanent
    13. # 关闭指定端口
    14. firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    15. # 立即生效
    16. firewall-cmd --reload
    17. # 查看开放的端口
    18. firewall-cmd --zone=public --list-ports

    docker-compose

    1. # Step 1: 创建 docker-compose.yml 文件
    2. cd /home/20221125/mynginx
    3. vim docker-compose.yml
    4. # Step 2: 编辑内容如下
    5. version: "3.0"
    6. services:
    7. nginxServer:
    8. image: nginx
    9. container_name: first_nginx
    10. restart: always
    11. privileged: true
    12. ports:
    13. - 8086:80
    14. - 80:80
    15. - 443:443
    16. volumes:
    17. - /home/20221125/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf
    18. - /home/20221125/mynginx/conf/conf.d:/etc/nginx/conf.d
    19. - /home/20221125/mynginx/log:/var/log/nginx
    20. - /home/20221125/mynginx/html:/usr/share/nginx/html
    21. # Step 3: 执行命令
    22. docker-compose up -d

    *
    *
    *

  • 相关阅读:
    AndroidStudio电脑连接手机后但AndroidStudio识别不到
    文生视频开源产品的一些调研(一)
    pyarmor 加密许可证的使用
    【保姆级】新机器部署MySQL
    【YSYY】DSPE-PEG-Transferrin;DSPE-PEG-TF转铁蛋白的主动靶向介绍;磷脂-聚乙二醇-转铁蛋白
    C++ 学习系列 -- 标准库常用得 algorithm function
    Linux命令截取pcap包 前100条报文 输出另一个pcap文件
    C. awoo‘s Favorite Problem--Educational Codeforces Round 130 (Rated for Div. 2)
    背包问题
    FaceChain-FACT:免训练的丝滑体验,秒级别的人像生成
  • 原文地址:https://blog.csdn.net/KingCruel/article/details/128055914