docker nginx容器的均衡负载

创建三个docker容器以实现nginx的负载均衡

编写nginx的dockfile

[root@docker nginx]# cat Dockerfile 
FROM nginx

RUN echo 'i am container 1'  > /usr/share/nginx/html/index.html

EXPOSE 80

CMD ["nginx","-g","daemon off;"]
[root@docker nginx]# 

创建自定义网络

docker network create --driver bridge  --subnet 192.168.13.0/24 --gateway 192.168.13.1 mqynet

启动两个容器

docker run -d  --name docker01 -v modify:/usr/share/nginx/html --net mqynet -p 801:80   mqynginx  
docker run -d  --name docker02 -v modify2:/usr/share/nginx/html --net mqynet -p 802:80   mqynginx 

--net 指定为自定义网络

修改容器2的内容

[root@docker _data]# pwd
/var/lib/docker/volumes/modify2/_data
[root@docker _data]# cat index.html 
i am container 2
[root@docker _data]# 

balancer dockerfile

[root@docker nginx]# cat balancer 
FROM nginx

RUN echo 'i am container 1'  > /usr/share/nginx/html/index.html

EXPOSE 80

RUN apt update && apt install -y  vim && apt install net-tools -y

CMD ["nginx","-g","daemon off;"]

进入balancer并安装ping命令
apt-get install inetutils-ping

尝试ping通容器名
ping docker02

修改balancer配置文件

upstream web{
                server docker01;
                server docker02;
        }
        
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    
    location / {   
            proxy_pass http://web;   #添加此location
    }

重读配置文件
docker restart balancer
ctrl + q + p
暂停镜像

提交镜像

docker commit balancer balancer:2.0

再次生成balancer容器
docker run -d --name balancer -p 803:80 --net mqynet balancer:2.0

验证负载均衡

[root@docker docker]# 
[root@docker docker]# curl localhost:803
i am container 2
[root@docker docker]# curl localhost:803
i am container 1
[root@docker docker]# curl localhost:803
i am container 2
[root@docker docker]# curl localhost:803
i am container 1

上传balancer镜像到云
登录云
docker login --username=sux registry.cn-sxy/balancer:2.0
给镜像打标签
docker tag f6e2cefb3ef0 registry.cn-sxy/balancer:2.0
docker push registry.cn-sxy/balancer:2.0

使用其他用户拿到镜像
docker pull registry.cn-sxy/balancer:2.0

关于挂载

modify:/usr/share/nginx/html 具名挂载
/xxx:/usr/share/nginx/html 路径挂载 (容器路径里的东西会被外面的文件直接覆盖)

posted @ 2022-04-20 21:12  supermao12  阅读(77)  评论(0编辑  收藏  举报