文章目录
一、新增一个名称为bridge2的bridge模式网络,网段为172.22.0.0/16,创建一个容器用bridge2网络运行,要求能用宿主机网络访问。
创建自定义网络,创建后使用ip a 可以查看
docker network create -d bridge --subnet 172.22.0.0/16 --gateway 172.22.0.1 bridge2
** 查看创建的网络,使用创建的网络运行wordpress容器**
docker network inspect bridge2
docker run -itd -p 2222:80 --network bridge2 --name wordpress2 -v /data/wordpress2:/var/www/html 1730fea0ae8e
查看容器ip,宿主机可以ping通
docker inspect c2f57e874301 |grep -i ipaddr
** 运行msyql容器,使用wordpress容器网络**
docker run --network container:c2f57e874301 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=123456 --name mysql2 -d -v /data/mysql:/var/lib/mysql --restart=always mysql:8.0.29-oracle
浏览器访问安装成功
二、创建一个harbor镜像仓库,把镜像上传到harbor仓库并能从里面下载镜像创建容器。
1.上传harbor包解压到/apps/目录,修改harbor.yml,执行安装./install.sh 脚本
./install.sh
2.添加host解析,浏览器访问harbor,并创建一个项目
3.上传镜像
修改/etc/docker/daemon.json文件,添加insecure-registries选项
cat /etc/docker/daemon.json
{
"registry-mirrors":["https://2abfrd78.mirror.aliyuncs.com"],
"insecure-registries": ["luohw.harbor.org"]
}
harbor没有配置https,登录harbor会提示Login did not succeed, error: Error response from daemon: Get “https://luohw.harbor.org/v2/”: dial tcp 192.168.1.153:443: connect: connection refused
在/etc/docker/daemon.json 配置insecure-registries 即可
配置hosts,登录harbor
vi /etc/hosts
192.168.1.153 luohw.harbor.org
修改镜像tag,并上传
docker tag eb4a57159180 luohw.harbor.org/images/nginx:latest
docker push luohw.harbor.org/images/nginx:latest
查看镜像上传成功
4.下载镜像
在其他机器上配置hosts和insecure-registries,下载镜像并运行容器
docker login luohw.harbor.org
docker pull luohw.harbor.org/images/nginx:latest
docker images
docker run -itd luohw.harbor.org/images/nginx:latest bash
三、用haproxy实现两个web服务器的负载均衡。
1.安装proxy
apt install haproxy -y
2. 配置web服务器和haproxy
配置二个web网站,分别是192.168.1.152:89和192.168.1.80:80 ,修改默认页面,修改haproxy配置文件并重启haproxy
listen stats
mode http
bind 0.0.0.0:9990
stats enable
log global
stats uri /haproxy-status
stats auth admin:123456
stats admin if TRUE
listen web
bind 192.168.74.128:88
mode http
server web1 192.168.1.152:89 check inter 3000 fall 3 rise 5;
server web2 192.168.1.80:80 check inter 3000 fall 3 rise 5;
listen web2
bind 192.168.1.153:88
mode http
server web1 192.168.1.152:89 check inter 3000 fall 3 rise 5;
server web2 192.168.1.80:80 check inter 3000 fall 3 rise 5;
listen web10
log global
option httplog
capture request header Host len 256
capture request header User-Agent len 512
capture request header Referer len 15
capture request header X-Forwarded-For len 15
bind 172.22.77.50:5555
mode http
#balance source
balance url_param key #负载均衡的ne'xi
option forwardfor header X-client
#http-request del-header user-agent
#http-request add-header user-agent test-browser
compression algo gzip deflate #启用压缩机制
compression type text/html text/css text/plain #压缩哪些类型文件
hash-type consistent #一致性hash
#cookie n80-cookie insert indirect nocache
option httpchk HEAD /index.html HTTP/1.1\nHost:\ 101.201.116.250 #七层健康检测
#acl 配置acl
acl bad_agent hdr_sub(User-Agent) -i curl #定义名称为bad_agent head的uri模糊匹配
acl danger_src src 101.201.116.250 #来源是这个ip
http-request deny if bad_agent danger_src #满足上面二个任意一个acl,拒绝
server web1 172.22.77.50:5551 check weight 1 inter 3000 fall 3 rise 5;
server web2 172.22.77.50:5552 check weight 2 inter 3000 fall 3 rise 5;
3.验证
通过curl 可以访问到到不同的网站