前言简介

Docker-machine(中文翻译docker机):一种提供管理多个docker主机的工具;提供docker主机容器的远程创建、管理、删除等功能;这样的docker主机容器前辈们称之为Dockerized主机;可用于运行docker容器。

Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。

Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。

虽然Docker Machine可以安装在本地或远程系统上,但最常见的方法是将其安装在本地计算机(本机安装或虚拟机)上,并使用它来部署Docker化远程服务器。

安装

Docker Machine 可以在多种操作系统平台上安装,包括 Linux、macOS,以及 Windows。

MacOS、Windows

Docker for Mac、Docker for Windows 自带 docker-machine 二进制包,安装之后即可使用。

Linux

在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

例如,在 Linux 64 位系统上直接下载对应的二进制包。

curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
chmod +x /usr/local/bin/docker-machine
docker-machine -v

使用

Docker Machine 支持多种后端驱动,包括虚拟机、本地主机和云平台等。

创建本地主机实例

Virtualbox 驱动

使用 virtualbox 类型的驱动,创建一台 Docker 主机,命名为 test。

docker-machine create -d virtualbox test

你也可以在创建时加上如下参数,来配置主机或者主机上的 Docker。

--engine-opt dns=114.114.114.114 配置 Docker 的默认 DNS

--engine-registry-mirror https://registry.docker-cn.com 配置 Docker 的仓库镜像

--virtualbox-memory 2048 配置主机内存

--virtualbox-cpu-count 2 配置主机 CPU

更多参数请使用 docker-machine create --driver virtualbox --help 命令查看。

MacOS xhyve 驱动

xhyve 驱动 GitHub: https://github.com/zchee/docker-machine-driver-xhyve

xhyve 是 MacOS 上轻量化的虚拟引擎,使用其创建的 Docker Machine 较 VirtualBox 驱动创建的运行效率要高。

brew install docker-machine-driver-xhyve
docker-machine create \
-d xhyve \
# --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso \
--engine-opt dns=114.114.114.114 \
--engine-registry-mirror https://registry.docker-cn.com \
--xhyve-memory-size \
--xhyve-rawdisk \
--xhyve-cpu-count \
xhyve

注意:非首次创建时建议加上 --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso 参数,避免每次创建时都从 GitHub 下载 ISO 镜像。

Windows 10

Windows 10 安装 Docker for Windows 之后不能再安装 VirtualBox,也就不能使用 virtualbox 驱动来创建 Docker Machine,我们可以选择使用 hyperv 驱动。

注意,必须事先在 Hyper-V 管理器中新建一个 外部虚拟交换机 执行下面的命令时,使用 --hyperv-virtual-switch=MY_SWITCH 指定虚拟交换机名称

docker-machine create --driver hyperv --hyperv-virtual-switch=MY_SWITCH vm

Linux

这里主要讲的是Centos 7 下面对docker-machine的使用,为什么要单独做成一个部分,因为我主要用的就是这部分~

安装docker-machine

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
cp /tmp/docker-machine /usr/local/bin/docker-machine
docker-machine version

安装Docker-machine脚本

第一个脚本使您可以在bash提示符中查看活动的机器。 当你使用和在多个Dockerized机器之间切换时,这很方便。 该脚本被称为docker-machine-prompt.bash 。 要下载它,请键入:

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash

要完成上述文件的安装,你必须为设置自定义值PS1在变量.bashrc文件。

vi ~/.bashrc
export PS1='[\u@\h \W$(__docker_machine_ps1 " [%s]")]\$ '
source /etc/bash_completion.d/docker-machine-wrapper.bash
source /etc/bash_completion.d/docker-machine-prompt.bash
source /etc/bash_completion.d/docker-machine.bash

当您激活一台机器,它的名字会被插入到shell提示符

第二个脚本被称为docker-machine-wrapper.bash 。 它增加了use子命令将docker-machine的命令,因此很容易Dockerized机之间切换。 要下载它,请键入

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash

第三个脚本被称为docker-machine.bash 。 它增加了bash补全了docker-machine的命令。

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash

要应用您迄今为止所做的更改,请关闭,然后重新打开终端。 如果您通过SSH登录到计算机,请退出会话并再次登录。 在命令完成dockerdocker-machine命令现在应该工作。 如果它不工作,它很可能是bash-completion包没有安装。 如果是这样,请使用以下命令安装:

yum install bash-completion

配置ssh密钥对

ssh-keygen -t rsa
ssh-copy-id 192.168.1.94
# 上面的192.168.1.94是远端docker主机,是一个拥有操作系统的docker引擎,但不是Dockerized主机

创建Dockerized主机

docker-machine create --driver generic --generic-ip-address=192.168.1.94 docker1

参数详解

--driver:指定docker-machine所使用的驱动类型,详情请参考官网;Linux与Linux之间的交互使用generic驱动,并且使用generic驱动则必须指定generic驱动主机的地址

官网参考地址:https://docs.docker.com/machine/drivers/

PS:我们登陆到192.168.1.94查看具体配置,在/etc/systemd/system/docker.service.d下文件名是:10-machine.conf

-H tcp://0.0.0.0:2376 使docker daemon接受远程连接

相关命令

docker-machine ls:查看docker-machine管理的Dockerized主机
docker-machine rm –f Dockerized:删除指定的Dockerized主机
docker-machine env Dockerized:查看指定的Dockerized主机环境变量
docker-machine upgrate docker1 docker2:批量更新docker host版本
docker-machine config docker1:查看host的docker daemon配置
docker-machine start/status/restart/kill:对docker host所在的系统的操作
docker-machine scp:docker host之间复制
docker-machine use machine-name:激活docker化主机
docker-machine ip machine-name:显示的主机的IP地址

参考地址:

https://yeasy.gitbooks.io/docker_practice/content/machine/usage.html

https://www.cnblogs.com/lkun/p/7781157.html

https://www.howtoing.com/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-centos-7

Docker三剑客之Machine的更多相关文章

  1. Docker 三剑客--Machine

    Machine 我们知道在多个集群服务环境下,安装管理Docker的容器,要使用的是Docker Swarm,而使用Docker Swarm的情况是在多个集群的服务器已经搭建好Docker环境的情况下 ...

  2. Docker(五):Docker 三剑客之 Docker Machine

    上篇文章Docker(四):Docker 三剑客之 Docker Compose介绍了 Docker Compose,这篇文章我们来了解 Docker Machine . Docker Machine ...

  3. Docker 三剑客之 Docker Swarm

    上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...

  4. Docker 三剑客之 Docker Swarm(基于 overlay 组网通信)

    相关文章:Docker 三剑客之 Docker Swarm 这一篇主要是对 Docker Swarm 的完善,增加基于 overlay 组网通信,以便 Docker 容器可以跨主机访问. 不同主机间的 ...

  5. Docker 三剑客

    Docker三剑客: Docker-Machine Docker Machine is a tool that lets you install Docker Engine on virtual ho ...

  6. Docker 三剑客 到 k8s 介绍

    一.Docker 三剑客 Docker-Compose Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启 ...

  7. 【云计算】docker三剑客如何支持分布式部署?

    This blog will explain how to create multi-container application deployed on multiple hosts using Do ...

  8. Docker三剑客之Docker Swarm

    一.什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...

  9. docker——三剑客之Docker Machine

    Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境.它支持多种平台,让用户在很短时间内搭建一套Docker主机集群. Ma ...

随机推荐

  1. 看demo1

    http://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/ pytorch文档 1.json JSON(JavaScrip ...

  2. leetcode.769旋转字符串

    给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...

  3. ECShop二次开发指南-文件结构(二)

      ecshop文件架构说明 注意:因各版权不一,大概参考/* ECShop 2.5.1 的结构图及各文件相应功能介绍 ECShop2.5.1_Beta upload 的目录 ┣ activity.p ...

  4. 「分块系列」「洛谷P4168 [Violet]」蒲公英 解题报告

    蒲公英 Description 我们把所有的蒲公英看成一个长度为\(n\)的序列(\(a_1,a_2,...a_n\)),其中\(a_i\)为一个正整数,表示第i棵蒲公英的种类的编号. 每次询问一个区 ...

  5. 1055 集体照 (25 分)C语言

    拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何人矮: 每排中最高者站中间(中 ...

  6. 1052 卖个萌 (20 分)C语言

    萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右 ...

  7. django 数据库连接出现的问题

    mysqlclient 1.3.3 or newer is required; you have 0.7.11: 解决方法: 将报错文件中的如下代码注释: if version < (1, 3, ...

  8. Go并发编程

    概述 简而言之,所谓并发编程是指在一台处理器上"同时"处理多个任务. 随着硬件的发展,并发程序变得越来越重要.Web服务器会一次处理成千上万的请求.平板电脑和手机app在渲染用户画 ...

  9. C#录制视频

    这是一个使用C#语言制作的录制框架,支持录制桌面,多屏,声音,摄像头,某个应用程序的界面 1.安装 使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索 或者使用Nuget命令 In ...

  10. Dockerfile文件记录(用于后端项目部署)

    Dockerfile文件记录(用于后端项目部署) 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 此文结合另一篇博客共同构成后端服 ...