Docker三剑客之Machine
前言简介
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-machinedocker-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登录到计算机,请退出会话并再次登录。 在命令完成docker
和docker-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
Docker三剑客之Machine的更多相关文章
- Docker 三剑客--Machine
Machine 我们知道在多个集群服务环境下,安装管理Docker的容器,要使用的是Docker Swarm,而使用Docker Swarm的情况是在多个集群的服务器已经搭建好Docker环境的情况下 ...
- Docker(五):Docker 三剑客之 Docker Machine
上篇文章Docker(四):Docker 三剑客之 Docker Compose介绍了 Docker Compose,这篇文章我们来了解 Docker Machine . Docker Machine ...
- Docker 三剑客之 Docker Swarm
上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...
- Docker 三剑客之 Docker Swarm(基于 overlay 组网通信)
相关文章:Docker 三剑客之 Docker Swarm 这一篇主要是对 Docker Swarm 的完善,增加基于 overlay 组网通信,以便 Docker 容器可以跨主机访问. 不同主机间的 ...
- Docker 三剑客
Docker三剑客: Docker-Machine Docker Machine is a tool that lets you install Docker Engine on virtual ho ...
- Docker 三剑客 到 k8s 介绍
一.Docker 三剑客 Docker-Compose Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启 ...
- 【云计算】docker三剑客如何支持分布式部署?
This blog will explain how to create multi-container application deployed on multiple hosts using Do ...
- Docker三剑客之Docker Swarm
一.什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...
- docker——三剑客之Docker Machine
Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境.它支持多种平台,让用户在很短时间内搭建一套Docker主机集群. Ma ...
随机推荐
- PHP四大主流框架的优缺点总结
本篇文章我们来讲讲PHP四大框架的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP框架去完成项目,废话不多说,我们一起来看看吧!! ThinkPHP ThinkPHP(FCS)是一个轻量级的中 ...
- 22.BASE_DIR,os,sys
原文: BASE_DIR演示 想在bin里调用main里的方法.需要找到目录. import sys,os BASE_DIR = os.path.dirname(os.path.dirname(os. ...
- spring定时器时间设置规则
单纯针对时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpressio ...
- spring注解之@Import注解的三种使用方式
目录 1.@Import注解须知 2.@Import的三种用法 3.@Import注解的三种使用方式总结 @ 1.@Import注解须知 1.@Import只能用在类上 ,@Import通过快速导入的 ...
- 洛谷$P2570\ [ZJOI2010]$贪吃的老鼠 网络流+二分
正解:网络流+二分 解题报告: 传送门$QwQ$ 和上一题有点儿像,,,?$QwQ$但是比上一题要有趣很多$QwQ$ 首先把大致思路捋下?依然是.二分出每个奶酪的开始和结束时间,然后check下最大流 ...
- 洛谷P2657 [SCOI2009]windy数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2657 题目大意:找区间 \([A,B]\) 范围内 不含前导零 且 相邻两个数字之差至少为2 的正整数的个数. 题目分 ...
- 【Java基础总结】总结
总想着把学习的过程全都记录下来 以便某一时刻回头的时候,还能看见走过的路 对于基础来说,即使不回头看,也知道这条路是什么样子的 记录不记录,都无所谓 况且我不是专业的记录者,不记录比记录好 实在想不起 ...
- 更加清晰的TFRecord格式数据生成及读取
TFRecords 格式数据文件处理流程 TFRecords 文件包含了 tf.train.Example 协议缓冲区(protocol buffer),协议缓冲区包含了特征 Features.Ten ...
- 机器学习新手必看:Jupyter Notebook入门指南
参考网址:https://blog.csdn.net/guleileo/article/details/80490921
- Linux删除文件 清除缓存
相信很多测试 经常会经历开发叫你清除缓存这种事. 那我们要怎么清呢? 一.首先,确认你要清除的缓存在哪个目录下,然后切换到该目录下,比如 我现在知道我的的缓存目录是在newerp这个目录下,则如图 二 ...