machine
创建machine,做好免密
[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=192.168.3.202 server2
操作命令
[root@server1 ~]# docker-machine ls
[root@server1 ~]# docker-machine config server2
[root@server1 ~]# docker `docker-machine config server2` ps
[root@server1 ~]# docker `docker-machine config server2` images
查看受控主机
查看受控主机信息
查看受控主机的容器
查看的受控主机的镜像
[root@server1 ~]# docker-machine env server2
显示访问server2所需的环境变量
[root@server1 ~]# eval $(docker-machine env server2)
与docker命令输出的都是server2的,打开的容器也是在server2上的,只是命令行没有显示
如何在命令行可以清楚的看到是在操作server2
[root@server1 ~]# yum install bash-* -y
[root@server1 ~]# mv docker-machine.bash docker-machine-prompt.bash docker-machine-wrapper.bash /etc/bash_completion.d/
[root@server1 ~]# vim .bashrc
#PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
退出重新连接在执行命令,可以清楚的看到是在操控server2
[root@server1 ~]# eval $(docker-machine env server2)
如何退出—重连
全自动部署docker
获取脚本
[root@server1 ~]# wget https://get.docker.com
[root@server1 ~]# mv index.html get-docker.sh
[root@server1 ~]# vim get-docker.sh
做两处修改
将这个脚本移到真机apache发布目录下,在真机搭好docker源:
[root@server1 ~]# scp get-docker.sh root@192.168.3.250:/var/www/html
[root@server1 ~]# ssh-copy-id server3
[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://192.168.3.250/get-docker.sh" --generic-ip-address 192.168.3.203 server3
compose
[root@server1 compose]# docker pull haproxy
[root@server1 compose]# docker pull nginx
[root@server1 ~]# mkdir compose
[root@server1 ~]# cd compose/
[root@server1 compose]# mkdir web1
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web2 > web2/index.html
[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]# cd haproxy/
[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
访问192.168.3.201/status
访问负载均衡
curl 192.168.3.201
停止web1
[root@server1 compose]# docker-compose stop web1
[root@server1 compose]# curl 192.168.3.201
命令后面可以+web1或web2
docker-compose stop #关闭
docker-compose start #开启
docker-compose logs #查看日志
docker-compose kill
docker-compose rm #删除
docker-compose up #创建并启动
-d #可以打入后台