I.创建HyperV docker虚拟机
1.命令:
docker-machine -D create -d hyperv --hyperv-virtual-switch "Intel(R) Wi-Fi 6 AX201 160MHz 虚拟交换机" testvm
docker-machine -D create -d hyperv --hyperv-virtual-switch "Intel(R) Wi-Fi 6 AX201 160MHz 虚拟交换机" testvm1
docker-machine -D create -d hyperv --hyperv-virtual-switch "Intel(R) Wi-Fi 6 AX201 160MHz 虚拟交换机" testvm2
2.boot2docker 虚拟机 docker账户密码tcuser
sudo -i 进入 root
3.从主机复制文件到vm
scp、ssh等在hyperv下无效,使用winScp复制文件(ssh docker@testvm password=tcuser)
4.创建 服务
docker service create --replicas 1 --name webapp2 -p 6000:80 -p 6001:443 \
--mount type=bind,src=/home/docker/certificate,dst=/app/https/certificate \
foreverhot1019/netcore:app2
注:
4.1 绑定卷 不能使用~,必须 /home/docker,docker是账户
4.2 绑定卷 使用 --mount type=bind,volumn时,必须为 名称
II.进入虚拟机(swarm管理机)
docker-machin ssh testvm
swarm 集群 带有 负载均衡,无论访问哪台机器,均可访问服务(与服务在虚机上是否创建容器无关),通过 Overlay网络通信
III.Swarm 配置
1.初始化swarm
docker swarm init --advertise-addr 10.52.27.36
2.加入 swarm,(swarm管理机 inti 时返回的token和ip:port)
分别进入:docker-machin ssh testvm1 & docker-machin ssh testvm2
执行 docker swarm join --token SWMTKN-1-5ize7ypcv8jcffhov6wp8w6wf54gc57osz0s69btfp3amu98ri-4593p61p0w00sa1emew2tfywu 10.52.27.36:2377
返回:This node joined a swarm as a worker 表示成功
IIII.查看 Swarm
docker service命令:https://www.jianshu.com/p/a84c8f7d01f7
1.查看集群信息(在swarm管理机)
docker info
2.部署服务到集群中
在一个工作节点上创建一个名为 my_nginx 的服务,这里是随机指派工作节点:
docker service create --replicas 1 --name my_nginx -p 80:80 nginx
3.查看服务部署情况
docker service ps my_nginx
docker service inspect --pretty my_nginx(具体信息)
4.扩展集群服务(水平扩展至2个helloworld服务)
docker service scale my_nginx=2
5.删除服务
docker service rm my_nginx
6.滚动升级服务
6.1 创建 redis
docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
6.2 升级 redis
docker service update --image redis:3.0.7 redis
7.停止某个节点接收新的任务
7.1 查看 节点 docker node ls
7.2 设置节点停止状态
docker node update --availability drain swarm-worker1y
SSH:
ssh-keygen -t rsa -b 2048
问题:
1.下载boot2docker.iso,报错
手动下载:https://github.com/boot2docker/boot2docker/releases
将 boot2docker.iso 放到 C:\Users\<SysUserName>\.docker\machine\cache目录
2.创建虚机时,卡住 报 ssh exit status 255 或者 ssh无法进入 虚机
2.1 修改对应虚机目录下的 C:\Users\<SysUserName>\.docker\machine\machines\<vm_name>\id_rsa 权限
2.2 改为 只有 当前账户和administrators组,administrators只有 读取和执行权限,当前账户完全控制,其他全部删除
2.3 文件所有者,改为 当前账户
2.4 测试 docker-machine ssh
ssh -vvv -F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker@10.52.27.109 -o IdentitiesOnly=yes -i C:\Users\<SysUserName>\.docker\machine\machines\<vm_name>\id_rsa -p 22
3.报 x509: certificate signed by unknown authority
重新生成 证书(创建虚机时证书没有复制过去)
docker-machine regenerate-certs testvm2
------------------------说明-------------------------------------------------------------------------
https://docker-docs.netlify.app/machine/drivers/hyper-v/#environment-variables-and-default-values
--hyperv-boot2docker-url: The URL of the boot2docker ISO.
--hyperv-virtual-switch: Name of the virtual switch to use.
--hyperv-disk-size: Size of disk for the host in MB.
--hyperv-memory: Size of memory for the host in MB.
--hyperv-cpu-count: Number of CPUs for the host.
--hyperv-static-macaddress: Hyper-V network adapter’s static MAC address.
--hyperv-vlan-id: Hyper-V network adapter’s VLAN ID if any.
CLI option Environment variable Default
--hyperv-boot2docker-url HYPERV_BOOT2DOCKER_URL Latest boot2docker url
--hyperv-cpu-count HYPERV_CPU_COUNT 1
--hyperv-disk-size HYPERV_DISK_SIZE 20000
--hyperv-memory HYPERV_MEMORY 1024
--hyperv-static-macaddress HYPERV_STATIC_MACADDRESS undefined
--hyperv-virtual-switch HYPERV_VIRTUAL_SWITCH first found
--hyperv-vlan-id HYPERV_VLAN_ID undefined