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..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=/tcp --permanent
#重启firewall防火墙
firewall-cmd --reload
#退出目标主机(这里指另外一台虚拟机)
exit
4.6 创建一个redis容器,并且在目标主机上进行验证 (按照以下命令进行执行和对比)
#创建容器myredis
docker run -d -p : --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
Docker Machine的使用的更多相关文章
- Docker Machine v1.11.2安装与使用
官方文档:Docker Machine 官方文档:Docker Toolbox boot2docker安装包官网下载链接:Docker Toolbox-1.11.1b.exe 此安装包包含的“boot ...
- Docker Machine, Compose, and Swarm: How They Work Together
The three tools are now neatly packaged into what’s called the Docker Toolbox. Docker Machine1/ crea ...
- Docker Machine
Docker Machine http://dockone.io/article/1485?utm_source=tuicool&utm_medium=referral 本地安装与使用 Doc ...
- [Docker] Docker Machine intro
List all the docker machine: docker-machine ls Can check 'ip' and 'status': docker-machine ip defaul ...
- Docker Machine 简介
Docker Machine 是什么? Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在 ...
- Docker Machine 详解
笔者在<Docker Machine 简介>一文中简单介绍了 Docker Machine 及其基本用法,但是忽略的细节实在是太多了.比如 Docker 与 Docker Machine ...
- 用 Docker Machine 创建 Azure 虚拟主机
搭建环境向来是一个重复造轮子的过程,Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起.笔者在<Docker Machine 简介>一文中演示了使用 Do ...
- 安装 Docker Machine - 每天5分钟玩转 Docker 容器技术(45)
前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...
- Docker教程:docker machine的配置和命令
http://blog.csdn.net/pipisorry/article/details/50921335 安装virtualbox 如果要使用virtualbox,首先要安装virtualbox ...
- Docker Machine搭建并加入节点
对于集群服务器来讲,要在每台机器上手动安装Docker是一件及其痛苦的事情,还好有Docker Machine这一工具,Docker三剑客中的一角. 一.Docker Machine介绍 这个工具已经 ...
随机推荐
- python课堂整理17---文件操作(上)
1.在同一目录下新建文本文件 “爱了” 2.在该文件下写入内容,同时留意pycharm右下角的编码格式为 utf- 8 3.下面程序中的read函数会索引系统默认的编码格式,winx下是gbk ,所以 ...
- CentOS7 修改PATH环境变量的方法
vim /etc/profile 添加: PATH=/root/.config/composer/vendor/bin:$PATH 保存,退出,运行: source /etc/profile 检查: ...
- spark streaming 接收kafka消息之五 -- spark streaming 和 kafka 的对接总结
Spark streaming 和kafka 处理确保消息不丢失的总结 接入kafka 我们前面的1到4 都在说 spark streaming 接入 kafka 消息的事情.讲了两种接入方式,以及s ...
- Java多线程笔记总结
1.线程的三种创建方式 对比三种方式: 通过继承Thread类实现 通过实现Runnable接口 实现Callable接口 第1种方式无法继承其他类,第2,3种可以继承其他类: 第2,3种方式多线程可 ...
- java中代码的注释和快捷
添加必要的注释,对一个有责任心.有道德模范的前端必须具备的好习惯, 可以大大提高代码的可维护性.可读性. java代码注释快捷键:ctrl+shift+/首先熟悉一下html.css.js的注释的写法 ...
- web设计_7_页面缺失图片或CSS的情况下仍然易读
1. 在任何可能使用背景图片的地方应设置同样的颜色的背景色. 防止图片不能加载的情况下,页面内容同样保持较好可读性. 例如文字为白色,背景图为深色,如果不设置背景色,当背景图未成功加载, 而浏览器多数 ...
- case和decode的用法(行转列)
创建了一张成绩表,如下图所示: 在oracle中,这两个函数我们都可以使用,代码及结果如下: decode用法: select Name,decode(Subject,'语文',1,'数学',2,'英 ...
- Hadoop自学系列集(四) ---- Hadoop集群
久等了,近期公司比较忙,学习的时间都没有啊,到今日才有时间呢!!!好了,下面就跟着笔者开始配置Hadoop集群吧. hosts文件和SSH免密码登录配置好了之后,现在进入Hadoop安装目录,修改一些 ...
- UE4 打包详细流程
这两天试着把之前做的一个UE4项目在安卓机上运行下,于是乎有了下面的一个打包血泪史. 首先呢,肯定是下载好了UE的源码了,我用的是4.18. 安装步骤可以先参考下官方的教程http://api.unr ...
- spring 的权限控制:security
下面我们将实现关于Spring Security3的一系列教程. 最终的目标是整合Spring Security + Spring3MVC 完成类似于SpringSide3中mini-web的功能. ...