• docker 实践七:docker-machine


    本篇是关于 docker 三剑客中的 docker machine。

    注:环境为 CentOS7,docker 19.03。

    docker-machine 是 docker 官方三剑客项目之一,它是一个命令行工具。利用 docker-machine 我们可以快速创建一个 docker 环境。同时它支持多种云计算环境,让用户能在多种平台上安装和维护 docker 运行环境。

    上图是 docker-machine 的原理图,它连接不同类型的操作平台是通过对应驱动来实现的, ⽬前已经集成了包括AWS、 IBM、 Google, 以及OpenStack、 VirtualBox、 vSphere等多种云平台的⽀持。

    安装 docker-machine

    在 linux 上安装 docker-machine 只需要从官方的release库中直接下载编译好的二进制文件即可

    base=https://github.com/docker/machine/releases/download/v0.16.0 &&
      curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
      sudo mv /tmp/docker-machine /usr/local/bin/docker-machine
    
    chmod +x /usr/local/bin/docker-machine
    

    安装完成后,查看其版本信息:

    # docker-machine version
    docker-machine version 0.16.0, build 702c267f
    

    docker-machine 支持命令的补全,需要下载 machine 库中的bash文件

    base=https://raw.githubusercontent.com/docker/machine/v0.16.0
    for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
    do
      sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
    done
    

    然后执行

    source /etc/bash_completion.d/docker-machine-prompt.bash
    

    要启用 docker-machine shell 提示,请添加$(__docker_machine_ps1)到 PS1 设置中 ~/.bashrc。PS1='[u@h W$(__docker_machine_ps1)]$ '

    使用 docker-machine

    安装 docker

    docker-machine 支持多种环境的安装,这里我们介绍几种

    virtualbox

    docker-machine 支持通过 virtualbox 驱动安装并配置 docker 主机,前提是我需要安装 virtualbox (https://www.virtualbox.org/wiki/Downloads)

    docker-machine create --driver virtualbox default
    

    genernic

    genernic 方式可以通过 ssh 直接在远程上安装 docker,但在这之前先要配置 ssh 认证

    1.生成密钥

    # ssh-keygen           
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:V7kl+8c0paW/yGFCA+TOvBoH86MtLdKBBZ432TwlrN0 root@centos1
    The key's randomart image is:
    +---[RSA 2048]----+
    |        ..       |
    |     .  oo . .   |
    |    . o *o+ + . o|
    |     o *+=.E = +.|
    |      +oS+ooo o..|
    |     . .+.o .. +.|
    |      ..o= . o. +|
    |     . +*.. + o..|
    |      .oo.   o . |
    +----[SHA256]-----+
    

    2.主机上安装密钥

    # ssh-copy-id root@192.168.10.11
    

    这样一来本机就可以不需要密码登陆远程主机了。

    3.genernic安装docker

    # docker-machine create --driver generic --generic-ip-address 192.168.10.11 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root centos2
    

    注:如果主机上没有安装 docker,这一过程的等待时间就会较长。

    4.查看主机

    # docker-machine ls
    NAME      ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER     ERRORS
    centos2   -        generic   Running   tcp://192.168.10.11:2376           v19.03.1
    

    其他平台

    其他平台的安装方式这里就不再详细说明,需要的话可以查阅 https://docs.docker.com/machine。

    docker-machine 命令

    docker-machine 提供一系列的子命令,对应不同的功能。

    下面介绍这些命令的具体用法

    active

    格式为 docker-machine active [arg...]。⽀持-timeout, -t "10" 选项, 代表超时时间, 默认为10s。 查看当前激活状态的Docker主机。 激活状态意味着当前的DOCKER_HOST环境变量指向该主机。 例如, 下⾯命令列出当前激活主机为dev主机:

    # docker-machine ls
    NAME      ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER     ERRORS
    centos2   -        generic   Running   tcp://192.168.10.11:2376           v19.03.1 
    

    config

    格式为 docker-machine config [OPTIONS] [arg...]。⽀持 --swarm参数, 表⽰打印Swarm集群信息, ⽽不是Docker信息。 查看到Docker主机的连接配置信息。 例如, 下⾯显⽰dev主机的连接信息:

    # docker-machine config centos2
    --tlsverify
    --tlscacert="/root/.docker/machine/machines/centos2/ca.pem"
    --tlscert="/root/.docker/machine/machines/centos2/cert.pem"
    --tlskey="/root/.docker/machine/machines/centos2/key.pem"
    -H=tcp://192.168.10.11:2376
    

    create

    格式为 docker-machine create [OPTIONS] [arg...]。 创建⼀个Docker主机环境。 ⽀持的选项包括:

    • --driver, -d "virtualbox": 指定驱动类型;
    • --engine-install-url "https://get.docker.com": 配置Docker主机时的安装URL;
    • --engine-opt option: 以键值对格式指定所创建Docker引擎的参数;
    • --engine-insecure-registry option: 以键值对格式指定所创建Docker引擎允许访问的不⽀持认证的注册仓库服务;
    • --engine-registry-mirror option: 指定使⽤注册仓库镜像;
    • --engine-label option: 为所创建的Docker引擎添加标签;
    • --engine-storage-driver: 存储后端驱动类型;
    • --engine-env option: 指定环境变量;
    • --swarm: 配置Docker主机加⼊到Swarm集群中;
    • --swarm-image"swarm: latest": 使⽤Swarm时候采⽤的镜像;
    • --swarm-master: 配置机器作为Swarm集群的master节点;
    • --swarm-discovery: Swarm集群的服务发现机制参数;
    • --swarm-strategy“spread”: Swarm默认调度策略;
    • --swarm-opt option: 任意传递给Swarm的参数;
    • --swarm-host "tcp: //0.0.0.0: 3376": 指定地址将监听Swarm master节点请求;
    • --swarm-addr: 从指定地址发送⼴播加⼊Swarm集群服务。

    例如, 通过如下命令可以创建⼀个Docker主机的虚拟机镜像:

    # docker-machine create -d virtualbox 
    --engine-storage-driver overlay 
    --engine-label name=testmachine 
    --engine-label year=2018 
    --engine-opt dns=8.8.8.8 
    --engine-env HTTP_PROXY=http://proxy.com:3128 
    --engine-insecure-registry registry.private.com 
    mydockermachine
    

    所创建Docker主机虚拟机中的Docker引擎将:

    • 使⽤overlay类型的存储驱动;·带有name=testmachine和year=2015两个标签;
    • 引擎采⽤8.8.8.8作为默认DNS;
    • 环境变量中指定HTTP代理服务http://proxy.com:3128。
    • 允许使⽤不带验证的注册仓库服务registry.private.com。

    env

    格式为 docker-machine env [OPTIONS] [arg...]。显⽰连接到某个主机需要的环境变量。 ⽀持的选项包括:
    ·-swarm: 显⽰Swarm集群配置;
    ·-shell: 指定所⾯向的Shell环境, 默认为当前⾃动探测;
    ·-unset, -u: 取消对应的环境变量;
    ·-no-proxy: 添加对象主机地址到NO_PROXY环境变量。
    例如, 显⽰连接到default主机所需要的环境变量:

    # docker-machine env  centos2
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.10.11:2376"
    export DOCKER_CERT_PATH="/root/.docker/machine/machines/centos2"
    export DOCKER_MACHINE_NAME="centos2"
    # Run this command to configure your shell: 
    # eval $(docker-machine env centos2)
    

    inspect

    格式为 docker-machine inspect [OPTIONS] [arg...]。以json格式输出指定Docker主机的详细信息。 ⽀持 -format, -f 选项使⽤指定的Go模板格式化输出。

    ip

    获取指定Docker主机地址。 例如, 获取 centos2 主机的地址, 可以⽤如下命令:

    # docker-machine ip centos2
    192.168.10.11
    

    kill

    直接杀死指定的Docker主机。指定Docker主机会强⾏停⽌。

    ls

    列出所有管理的主机。 格式为 docker-machine ls [OPTIONS] [arg...]。可以通过--filter只输出某些Docker主机, ⽀持过滤器包括名称正则表达式、 驱动类型、 Swarm管理节点名称、 状态等。 例如:

    # docker-machine ls --filter state=Running
    NAME      ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER     ERRORS
    centos2   -        generic   Running   tcp://192.168.10.11:2376           v19.03.1  
    

    ⽀持选项包括:

    • --quiet, -q: 减少⽆关输出信息;
    • --filter [--filter option--filter option]: 只输出符合过滤条件主机;
    • -timeout, -t "10": 命令执⾏超时时间, 默认为10s;
    • -format, -f: 使⽤所指定的Go模板格式化输出。
  • 相关阅读:
    洛谷P1022计算器的改良(字符串+各种细节坑点考虑)
    hdu5974Math Problem(数学,思维,公式,取巧猜)
    牛客练习赛26A平面(数学公式)
    洛谷P1217回文质数(特判筛选,取巧判断顺序)
    尺取法
    51nod1006最长公共子序列(lcs输出路径)
    51nod1175区间第k大(小)数(主席树模板)
    51nod1174区间中最大的数(rmq模板或线段树 && 线段树标准模板)
    51nod1094和为k连续区间(前缀和+map判断优化)
    矩阵快速幂求递推数列
  • 原文地址:https://www.cnblogs.com/xingyys/p/11423657.html
Copyright © 2020-2023  润新知