zoukankan      html  css  js  c++  java
  • Docker Machine的使用

      前面两篇文章(《Asp.Net Core 发布到 Docker(Linux Centos 虚拟机,使用Dockerfile)》 《Docker Compose的使用》),简单介绍了Dockerfile和Compose的使用,主要是基于教学使用(或者快速上手Docker)。如果想要深入理解还是需要去看Docker官网。接下来介绍时,我会尽量详细一些。

    目录:

      一、Virtualbox网络设置

      二、Docker Machine 简介和安装

      三、Docker Machine Driver 的选择

      四、创建 Machine 

      五、总结

    一、虚拟机Virtualbox网络设置

    1.1 配置

      软件配置:Windows 10(主机)+ Virtualbox(虚拟机)+ Centos 7 系统(虚拟机系统) + Docker

      虚拟机数量:2(使用相同的Virtualbox网络配置)

    1.2 Virtualbox的网络连接方式

      参考:https://blog.csdn.net/bifengmiaozhuan/article/details/79887692

         https://www.cnblogs.com/jpfss/p/8616613.html

      关键点:

      

    1.3 选择网络连接方式

      目标:

    • 主机和虚拟机互通
    • 虚拟机之间互通
    • 虚拟机上网

      根据要实现的目标,只有桥接模式符合(如果考虑安全性并且有多张网卡,可以使用网络模式NAT+hostonly)。

    二、Docker Machine 简介和安装

    2.1 简介

      官方介绍:https://docs.docker.com/machine/overview/

      Docker Machine 是一种配置新资源的最快且最简单的方式,并能让容器在其上运行。

      Docker Machine 能够创建服务器、在服务器上安装Docker ,以及配置本地Docker 客户端,让它们能够访问服务器。Docker Machine 自带了很多驱动,能够适配大部分主流的云服务提供商(包括AWS、谷歌的Google Compute Enginer、微软Azure、Digital  Ocean)以及VMWare 和VirtualBox。摘自《Docker开发指南》

    2.2 安装

      使用Docker github官方介绍进行安装(https://github.com/docker/machine/releases/

      例如:linux 安装命令

    $ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
        chmod +x /tmp/docker-machine &&
        sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

      查看是否安装成功

    docker-machine version
    

     如上图显示,则安装成功。

    三、Docker Machine Driver的选择

    3.1 官方介绍

      参考:https://docs.docker.com/machine/drivers/

    3.2 Driver 选择

      根据虚拟机或者具体环境选择不同的driver(这里使用的是Generic

    四、创建 Machine

      参考:https://docs.docker.com/machine/drivers/generic/

    4.1 生成SSH秘钥,执行以下命令(一路Enter键即可)

    ssh-keygen

    4.2 认证

    #192.168.0.7是目标主机IP(这里是另外一台虚拟机IP,可以使用ifconfig命令查看IP)
    #root是登录目标主机的登录账户(如果不使用root账户,那其他账户最好是管理权限(docker需要root权限),并且不需要输入sudo命令)
    #生成的过程中需要输入root账户的密码
    ssh-copy-id root@192.168.0.7 

    4.3 创建 machine(需要目标主机是运行状态)

    $ docker-machine create     #创建命令
      --driver generic    #选择的driver
      --generic-ip-address=192.168.0.7     #需要连接的目标主机IP(这里是另外一个虚拟机)
      --generic-ssh-key ~/.ssh/id_rsa     #使用的证书
      vm1  #machine名称

    注意:命令需要执行一段时间(需要在目标主机上安装Docker),不要停止(即不要按Ctrl+C键)

    4. 4 执行环境变量,执行以下命令

    docker-machine env vm1
    eval $(docker-machine env vm1)

    注意:这一步骤必须执行,否则目标主机不会同步命令(主机创建容器,但是目标主机不会创建)。

    4.5 查看

    执行以下命令,查看刚才创建的machine(需要目标主机是运行状态)

    docker-machine ls

    正常显示:

      

    注意:

      如遇到以下错误(no roote to host),可以参考:https://www.jianshu.com/p/96aebba5d3cc

       需要执行以下命令:

    #通过ssh命令登录到目标主机(这里指另外一台虚拟机)
    docker-machine ssh vm1 
    #在防火墙开放指定端口
    firewall-cmd --zone=public --add-port=2376/tcp --permanent 
    #重启firewall防火墙
    firewall-cmd --reload 
    #退出目标主机(这里指另外一台虚拟机) 
    exit

    4.6 创建一个redis容器,并且在目标主机上进行验证  (按照以下命令进行执行和对比)

    #创建容器myredis
    docker run -d -p 6379:6379 --name myredis redis
    #查看运行中的容器
    docker ps
    #使用ssh进入目标主机
    docker-machine ssh vm1
    #查看目标主机中正在运行的容器
    docker ps
    #退出目标主机
    exit

    举例:

    至此,创建machine成功。

    五、总结

    5.1 如果在虚拟机上使用docker-machine,需要注意虚拟机软件(VMare/Virtualbox)的网络连接方式

    5.2 需要根据具体的情景,进行docker machine driver的选择

    5.3 需要目标主机防火墙(不建议直接关闭)的端口配置

    参考资料:

    https://www.cnblogs.com/jsonhc/p/7784466.html

  • 相关阅读:
    DotNetty 实现 Modbus TCP 系列 (一) 报文类
    C# 获取文件详细备注信息 (如图片、视频实际创建时间)
    Java 下载 HLS (m3u8) 视频
    开源 DotNetty 实现的 Modbus TCP/IP 协议
    SQL Server 2008 开启远程连接
    在 Web 页面使用 VLC 插件播放 m3u8 视频流 (360 极速模式)
    在 Web 页面中使用离线地图
    使用 Travis CI 自动部署 Hexo 站点至 GitHub Pages
    BZOJ 3238: [Ahoi2013]差异((单调栈+后缀数组)/(后缀树))
    BZOJ 3998: [TJOI2015]弦论(后缀自动机)
  • 原文地址:https://www.cnblogs.com/zhizihuakai/p/11440115.html
Copyright © 2011-2022 走看看