Docker-Machine 在HyperV下的坑

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值