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 ...
随机推荐
- Java并发编程系列-(8) JMM和底层实现原理
8. JMM和底层实现原理 8.1 线程间的通信与同步 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息.在编程中,线程之间的通信机制有两种,共享内存和消息传递. 在共享内存的并发模型里,线 ...
- Java第一次创建对象速度比之后慢的原因
类的对象在第一次创建的时候,Java虚拟机(JVM)首先检查是否所要加载的类对应的Class对象是否已经加载.如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入.一般某个类 ...
- iptables脚本封ip
##自动封IP:分析web或应用日志或者网络连接状态封掉垃圾IP #!/bin/sh /bin/netstat -na|grep ESTABLISHED|awk |grep -v -E '192.16 ...
- 【题解】 P2763 试题库问题(网络流)
P2763 试题库问题 考虑一个试题要被加入进答案的集合有什么条件? 是某种类型 只算作一次 就这两种且的限制,所以我们用串联的方式连接"类型点"和"作用点". ...
- spring cloud微服务快速教程之(六) 应用监控 spring boot admin
0-前言 当我们发布了微服务后,我们希望对各个应用的各个运行状况进行一个监控:这个时候spring boot admin,就出场了: spring boot admin:是一个监控和管理spring ...
- shell 概览
shell能做什么: 1. 自动化批量系统初始化程序(update,软件安装,时区设置,安全策略...) 2. 自动化批量软件部署程序(LAMP,LNMP,Tomcat,LVS,Nginx) 3. 管 ...
- 在nginx服务器里面搭建好node.js本地服务器后,利用Node.js的FS模块,实现简单数据的写入和读取
先在server.js里面引入: var fs = require('fs'); 然后写入 // 往writeme.txt文件 写入一些内容 fs.writeFile('./writem ...
- Spring Cloud Alibaba Nacos
1. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 为分布式应用程序开发提供了一站式解决方案.它包含了开发分布式应用程序所需的所有组件,使得你可以轻松地使用 ...
- python的range()
range() 是一个函数,用来生成一个自然数的序列 用list()显示具体内容 扩展 # range()是一个函数,可以用来生成一个自然数的序列 r = range(5) # 生成一个这样的序列 ...
- P1850 换教室 期望dp
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...