前面两篇文章(《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的使用的更多相关文章

  1. Docker Machine v1.11.2安装与使用

    官方文档:Docker Machine 官方文档:Docker Toolbox boot2docker安装包官网下载链接:Docker Toolbox-1.11.1b.exe 此安装包包含的“boot ...

  2. 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 ...

  3. Docker Machine

    Docker Machine http://dockone.io/article/1485?utm_source=tuicool&utm_medium=referral 本地安装与使用 Doc ...

  4. [Docker] Docker Machine intro

    List all the docker machine: docker-machine ls Can check 'ip' and 'status': docker-machine ip defaul ...

  5. Docker Machine 简介

    Docker Machine 是什么? Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在 ...

  6. Docker Machine 详解

    笔者在<Docker Machine 简介>一文中简单介绍了 Docker Machine 及其基本用法,但是忽略的细节实在是太多了.比如 Docker 与 Docker Machine ...

  7. 用 Docker Machine 创建 Azure 虚拟主机

    搭建环境向来是一个重复造轮子的过程,Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起.笔者在<Docker Machine 简介>一文中演示了使用 Do ...

  8. 安装 Docker Machine - 每天5分钟玩转 Docker 容器技术(45)

    前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...

  9. Docker教程:docker machine的配置和命令

    http://blog.csdn.net/pipisorry/article/details/50921335 安装virtualbox 如果要使用virtualbox,首先要安装virtualbox ...

  10. Docker Machine搭建并加入节点

    对于集群服务器来讲,要在每台机器上手动安装Docker是一件及其痛苦的事情,还好有Docker Machine这一工具,Docker三剑客中的一角. 一.Docker Machine介绍 这个工具已经 ...

随机推荐

  1. python load,loads,dumps,dump区别

    json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面演 ...

  2. Java&mysql:过滤文件内容,将新文件内容存入mysql数据库

    在上一篇博文jdbc连接数据库中我已经简单介绍了如何连接到mysql数据库,今天要总结的是学长给我布置的一个小作业,把一个很大的已经用","分开了的一行一行的txt文件内容过滤掉注 ...

  3. [ PyQt入门教程 ] PyQt5环境搭建和配置

    PyQt入门系列教程主要目的是希望通过该系列课程学习,可以使用PyQt5工具快速实现简单的界面开发,包括界面设计.布局管理以及业务逻辑实现(信号与槽).简单说就是可以使用PyQt5工具快速画一个控件摆 ...

  4. Linux文件系统损坏导致无法正常启动与fsck修复工具

    今天在打开自己的虚拟机学习的时候,发现在文件系统检查过程中出现以下的报错: /dev/mapper/VolGroup-lv_root:UNEXPECTED INCONSISTENCY;RUN fsck ...

  5. python交互界面无法使用方向键

    问题 python交互界面无法使用方向键,按方向键全变成^[[^C这类型的字符 解决办法 办法1: 使用yum安装readline.readline-devel,然后重装python 这种方法太麻烦了 ...

  6. 传输层的TCP和UDP协议

    作者:HerryLo 原文永久链接: https://github.com/AttemptWeb... TCP/IP协议, 你一定常常听到,其中TCP(Transmission Control Pro ...

  7. Serilog 自定义Enricher 来增加记录的信息

    Serilog 自定义Enricher 来增加记录的信息 Intro Serilog 是 .net 里面非常不错的记录日志的库,结构化日志记录,而且配置起来很方便,自定义扩展也很方便 Serilog ...

  8. Activiti6系列(4)- 三个war包的数据源及密码修改

    一.activiti-app修改数据源和密码 1.使用sublimetext工具打开tomcat,方便进行配置文件的修改. 找到被解压的war包,activiti-app/WEB-INF/classe ...

  9. Netty学习(六)-LengthFieldBasedFrameDecoder解码器

    在TCP协议中我们知道当我们在接收消息时候,我们如何判断我们一次读取到的包就是整包消息呢,特别是对于使用了长连接和使用了非阻塞I/O的程序.上节我们也说了上层应用协议为了对消息进行区分一般采用4种方式 ...

  10. Pipeline 模型

    解决的问题 解决并发效率问题,将任务拆分成流水线,然后多线程并发执行,比之单线程执行快. 案例 CPU 流水线 Tomcat 容器 Structs