Docker 三剑客

链接: docker-machine 提取码: 6itu

[root@server1 ~]# mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine
[root@server1 ~]# chmod  +x /usr/local/bin/docker-machine
[root@server1 ~]# ssh-keygen
[root@server1 ~]# ssh-copy-id server2:
[root@server1 ~]# docker-machine create --driver generic --generic-ip-address=172.25.1.2 server2

在这里插入图片描述

[root@server1 ~]# yum install bash-* -y

在这里插入图片描述

[root@server1 ~]#  cd /etc/bash_completion.d

将下面几个组件放置这个目录下
链接: .bash文件 提取码: gi5f
在这里插入图片描述

[root@server1 ~]# vim .bashrc
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '

退出当前shell,重新登陆即可生效

[root@server1 ~]# docker-machine env server2
[root@server1 ~]# eval $(docker-machine env server2)

在这里插入图片描述
我们再次使用docker时,显示的就是server2的images
在这里插入图片描述
搭建不同版本的
在真机上搭建yum源放到http的默认发布目录中

[root@Sun_s html]# vim docker-ce.repo 
[docker]
name=docker-ce
baseurl=http://172.25.1.250/docker-ce
gpgcheck=0
[root@Sun_s html]# wget https://get.docker.com
[root@Sun_s html]# mv index.html get-docker.sh
修改下图圈出内容  yum源位置

在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://172.25.1.250/get-docker.sh" --generic-ip-address 172.25.1.3 server3
[root@server1 ~]# eval $(docker-machine env server3)

在这里插入图片描述

1.Docker-compose

[root@server1 ~]# mkdir compose
[root@server1 ~]# cd compose/
[root@server1 compose]# vim docker-compose.yml
version: "3.9"
services:
  web1:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web1:/usr/share/nginx/html
  
  web2:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web2:/usr/share/nginx/html

  haproxy:
    image: haproxy
    networks:
      - mynet
    ports:
      - "80:80"
    volumes:
      - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

networks:
  mynet:
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 >web1/index.html
[root@server1 compose]# echo web2 >web2/index.html
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim haproxy.cfg

global
        maxconn         65535
        stats socket    /var/run/haproxy.stat mode 600 level admin
        log             127.0.0.1 local0
        uid             200
        gid             200
        #chroot          /var/empty
        daemon

defaults
        mode            http
        log             global
        option          httplog
        option          dontlognull
        monitor-uri     /monitoruri
        maxconn         8000
        timeout client  30s
        retries         2
        option redispatch
        timeout connect 5s
        timeout server  5s
        stats uri       /status



# The public 'www' address in the DMZ
frontend public
        bind            *:80 name clear
        #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem

        #use_backend     static if { hdr_beg(host) -i img }
        #use_backend     static if { path_beg /img /css   }
        default_backend dynamic

# The static backend backend for 'Host: img', /img and /css.
backend dynamic
        balance         roundrobin
        server          app1 web1:80 check inter 1000
        server          app2 web2:80 check inter 1000
[root@server1 compose]# docker-compose up
[root@server1 compose]# docker-compose start
[root@server1 compose]# docker-compose ps

在这里插入图片描述

在这里插入图片描述
在真机上测试负载均衡情况
在这里插入图片描述
查看健康检查

[root@server1 compose]# docker-compose stop web1

在这里插入图片描述
Docker Compose 常用命令

Build: 构建或重新构建服务。
kill: 强制停止服务容器。
logs: 查看服务的输出。
port: 打印绑定的公共端口。
ps: 列出所有容器。
pull: 拉取服务所需镜像。
rm: 删除停止的服务容器。
up: 构建并启动容器。

2.docker swam

初始化

[root@server1 harbor]# docker swarm init

在这里插入图片描述
根据提示在其他docker节点上执行命令:
在这里插入图片描述
在这里插入图片描述
查看swarm集群节点

[root@server1 ~]# docker node ls

在这里插入图片描述

[root@server1 ~]# docker load -i myapp.tar
[root@server1 ~]# docker load -i visualizer.tar
[root@server1 ~]# docker tag ikubernetes/myapp:v1 myapp:v1

实现负载均衡
在这里插入图片描述
在这里插入图片描述

节点升降级

[root@server1 ~]# docker node promote server2
[root@server1 ~]# docker node demote server1

在这里插入图片描述

[root@server1 ~]# docker swarm leave
[root@server2 ~]# docker node rm server1

在这里插入图片描述

加入一个新的节点
重新配置一台server4
加入集群,注意现在的managerserver2,要写server2的ip

[root@server4 ~]# docker swarm join --token SWMTKN-1-5worodwhvojzfl76gmoi3n68encf8ha3gaze302aus6yw7g382-c2d31ke2j0ncdiijo1efgpffu 172.25.1.2:2377

在这里插入图片描述

[root@server2 docker]# vim daemon.json
{
  "registry-mirrors": ["https://reg.westos.org"]
}
[root@server2 docker]# scp daemon.json server4:/etc/docker/
[root@server2 docker]# scp daemon.json server3:/etc/docker/
[root@server2 docker]# scp -r certs.d/ server4:/etc/docker/
[root@server2 docker]# vim /etc/hosts

在这里插入图片描述

2.加入本地私有仓库

[root@server1 harbor]# docker-compose start
[root@server1 ~]# docker tag myapp:v1 reg.westos.org/library/myapp:v1
[root@server1 ~]# docker push reg.westos.org/library/myapp:v1
[root@server2 ~]# docker service rm my_cluster
然后把各个节点上已经拉取的镜像删除掉
[root@server2 ~]# docker service create --name myweb --replicas 3 -p 80:80  myapp:v1
[root@server2 docker]# docker  service scale myweb=6

在这里插入图片描述

3. 实现业务滚动更新

[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s  myweb
[root@server4 ~]# systemctl  stop docker.service

当把server4down掉的话,业务会自动跳到其他的server上
在这里插入图片描述

3.docker stack部署集群

基于 Docker Swarm 之上来完成应用的部署,面向大规模场景下的多服务部署和管理。

1.docker stack与docker-compose的区别:

  • Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
  • Docker Compose是一个Python项目,使用Docker API规范来操作容器。
  • Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
  • Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
  • docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。

2.docker stack相关命令:

在这里插入图片描述

参考官方地址集群部署
在部署之前需要先清除刚才所做的service

3.编写yml文件

[root@server2 ~]# mkdir compose
[root@server2 ~]# cd compose/
[root@server2 compose]# vim docker-compose.yml
version: "3.9"
services:
  web:
    image: myapp:v1
    networks:
      - mynet
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
  visualizer:
    image: visualizer
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"
networks:
  mynet:

将监控的镜像也上传至本地私有仓库,方便使用,因为yml编写的时候直接从本地仓库拉取

[root@server1 ~]# docker tag dockersamples/visualizer reg.westos.org/library/visualizer:latest
[root@server1 ~]# docker push reg.westos.org/library/visualizer:latest

4.执行

[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster

在这里插入图片描述

5.查看效果

[root@server2 compose]# docker service ls

在这里插入图片描述
我们在监控页面查看
在这里插入图片描述

4.Portainer可视化

1.部署portainer

链接: portainer 目录 提取码: zzct

[root@server1 ~]# cd portainer/
[root@server1 portainer]# ls
portainer-agent-stack.yml  portainer-agent.tar  portainer.tar
[root@server1 portainer]# docker load -i portainer-agent.tar
[root@server1 portainer]# docker load -i portainer.tar
将这些镜像统一放到我们搭建的本地私有仓库中
[root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/library/agent:latest
[root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/library/portainer:latest
[root@server1 portainer]# docker push reg.westos.org/library/agent:latest
[root@server1 portainer]# docker push reg.westos.org/library/portainer:latest
[root@server1 portainer]# scp portainer-agent-stack.yml server2:~/
[root@server2 ~]# vim portainer-agent-stack.yml                   ##对镜像位置进行修改即可

在这里插入图片描述

[root@server2 ~]# docker stack deploy -c portainer-agent-stack.yml portainer      ##执行

在这里插入图片描述
在这里插入图片描述
在web 界面查看 172.25.1.2:9000 可以看到登录界面 首次登录需要设置账号,密码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sun__s/article/details/113337157
今日推荐