Docker Machine快速安装Docker环境(二)_setting docker configuratin on the remote-程序员宅基地

技术标签: docker  

什么是Docker Machine?

Machine是一个简化安装Docker环境的工具。怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装。市场上主流Linux系统版本很多,每次安装岂不有些麻烦。使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。

另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理LXC容器技术。我个人理解是这样的,具体Docker官方初衷设计如何,还需进一步探索。

注意:Machine安装docker环境中会因网络或其他情况造成安装失败,使用中发现,这种安装失败频率很高,感觉没有使用的价值,说白了,一个公司操作系统一般不会超过两个发行版,写个脚本一键安装也许会更方便!


1、先看下Docker Machine支持Docker以什么为虚拟化技术的驱动

spacer.gifwKiom1aDiz7T-9ZSAABJHO1GfWQ140.png

2、安装Docker-Machine

操作系统:Ubuntu14.04_x64

docker-machine代码托管在github上,而二进制文件存储在AWS S3上,因此需要翻墙才可以下在,我也上传了一个到51cto,可以下载使用:http://down.51cto.com/data/2139681

下载后上传到Ubuntu系统的当前目录下,然后执行:

$ sudo mv docker-machine_linux-amd64 /usr/local/bin/docker-machine

如果能访问AWS S3存储,可以在root用户下直接运行下面这个命令:

$ curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64 >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine

当命令执行成功后,就可以查看到版本:

$ docker-machine version

docker-machine version 0.5.3, build 4d39a66

3、接下来用docker-machine命令快速创建Docker主机

注意:docker-machine通过ssh连接到Docker主机,从网上下载并安装docker工具,需要用root权限来安装,在ubuntu系统下,默认禁止root用户登录系统,因此需要先配置root允许SSH登录系统并免交互登录或指定私钥登录。另外,以下是在本机创建Docker主机,如果创建的Docker主机不在本机,则在预创建的Docker主机配置允许root SSH远程。

1) 允许root ssh登录(本机或docker主机操作)

$ sudo -i #切换到root用户

# vi /etc/ssh/sshd_config

PermitRootLogin yes    #修改此项为允许root登录

# service ssh restart

# passwd  #按提示设置root用户密码

2) 创建密钥对(machine主机操作)

# ssh-keygen  #一直回车

3) 免交互root登录系统(machine主机操作)

# ssh-copy-id [email protected]  #将公钥拷贝到docker主机

# ssh [email protected]   #如果不提示密码登录主机说明成功,可以继续下一步了

4) 启用visiblepw(machine主机操作)

# vi /etc/sudoers

Defaults   visiblepw

按wq!保存退出!惭愧,还不太明白这个visiblepw的实际作用。

如果不添加这个条,可能报下面的错:

1
2
3
4
5
6
7
8
9
10
Error creating machine: Error running provisioning: Something went wrong running an SSH  command !
command  sudo  hostname  ubuntu &&  echo  "ubuntu"  sudo  tee  /etc/hostname
err     :  exit  status 1
output  :  sudo : no  tty  present and no askpass program specified
Sorry, try again.
sudo : no  tty  present and no askpass program specified
Sorry, try again.
sudo : no  tty  present and no askpass program specified
Sorry, try again.
sudo : 3 incorrect password attempts

5) 使用generic类型的驱动,创建一台docker主机,名字为18.5

# docker-machine create -d generic --generic-ip-address=192.168.18.5 --generic-ssh-user=root 18.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Creating CA:  /root/ .docker /machine/certs/ca .pem
Creating client certificate:  /root/ .docker /machine/certs/cert .pem
Running pre-create checks...
Creating machine...
(18.5) No SSH key specified. Connecting to this machine now and  in  the future will require the  ssh  agent to contain the appropriate key.
Waiting  for  machine to be running, this may take a few minutes...
Machine is running, waiting  for  SSH to be available...
Detecting operating system of created instance...
Detecting the provisioner...
Provisioning with ubuntu(upstart)...
Installing Docker...
Copying certs to the  local  machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect Docker to this machine, run: docker-machine  env  ubuntu

参数说明:

-d  driver  #指定基于什么虚拟化技术的驱动

--generic-ip-address  #指定要安装宿主机的IP,这里是本地的IP。也就是说,你也可以给别的主机装Docker,前提是SSH root用户免交互登录或私钥认证。

--generic-ssh-user   #SSH的用户

--generic-key-key   #指定私钥来实现免交互登录


等待数分钟后,docker就安装成功了,可以通过docker命令管理容器了。如果安装失败多尝试两次!

# docker-machine ls

1
2
NAME      ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER    ERRORS
18.252    -        generic   Running   tcp: //192 .168.18.252:2376           v1.9.1


针对Docker主机开启root ssh登录配置,简单写了个脚本,方面操作:

$ vi conf_root_ssh_remote.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
if  [ $USER !=  "root"  ];  then
     echo  "Please use root account operation or sudo!"
     exit 
fi
if  ! $( which  expect > /dev/null );  then
     apt-get  install  expect -y
fi
# 设置SSH允许root远程登录
sed  -r -i  's/(PermitRootLogin).*/\1 yes/'  /etc/ssh/sshd_config
service  ssh  restart > /dev/null
# 设置root用户密码
while  true do
     read  -p  "Please enter you account to set the root password: "  ROOT_PASS
     if  [ -n  "$ROOT_PASS"  ];  then
         break
     else
         echo  "Password can not be empty!"
         continue
     fi
done
expect -c "
     spawn  passwd  root
     expect {
         \"Enter new UNIX password:\" {send \"$ROOT_PASS\r\"; exp_continue}
         \"Retype new UNIX password:\" {send \"$ROOT_PASS\r\"}
     }
     expect eof  #文件结束
" > /dev/null
echo  "The root account password is: $ROOT_PASS"

$ sudo bash conf_root_ssh_remote.sh

The root account password is: 123456

说明:在预安装Docker主机上执行,执行成功后,预安装Docker主机上就不做其他操作了。


docker-machine命令:

  • help  查看帮助信息

  • active  查看活动的Docker主机

  • config  输出连接的配置信息

  • create  创建一个Docker主机

  • env  显示连接到某个主机需要的环境变量

  • inspect  输出主机更新信息

  • ip  获取Docker主机地址

  • kill  停止某个Docker主机

  • ls  列出所有管理的Docker主机

  • regenerate-certs  为某个主机重新成功TLS认证信息

  • restart  重启Docker主机

  • rm  删除Docker主机

  • scp  在Docker主机之间复制文件

  • ssh  SSH到主机上执行命令

  • start  启动一个主机

  • status  查看一个主机状态

  • stop  停止一个主机

  • upgrade  更新主机Docker版本为最新

  • url  获取主机的URL


安装参考:https://docs.docker.com/machine/install-machine/

命令参考:https://docs.docker.com/machine/reference/

本文出自 “李振良的技术博客” 博客,请务必保留此出处http://lizhenliang.blog.51cto.com/7876557/1730028

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wanghailong041/article/details/50788646

智能推荐

【牛客】9、青蛙变态跳台阶(斐波那契数列)_牛客网青蛙跳台阶-程序员宅基地

文章浏览阅读156次。一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:当n=1时,f(1)=1当n=2时,f(2)=2当n=3时,第一步可以跳一阶,剩下的是f(2);或者第一步可以跳两节,剩下的是f(1)。即f(3)=f(2)+f(1)…当n阶台阶,第一步可以跳一阶,剩下的是f(n-1);或者第一步可以跳两节,剩下的是f(n-2);第一步可..._牛客网青蛙跳台阶

C++产生指定范围[a,b]内不重复随机数的两种方法_返回[a,b)内的随机数c++-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏9次。1. 使用srand()及rand()这种方法参考了博客https://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html,里面有更详细的说明。#include <iostream>#include <stdlib.h> #include <time.h> using namespace ..._返回[a,b)内的随机数c++

2020年勒索病毒事件盘点及未来发展趋势-程序员宅基地

文章浏览阅读1.5k次。2020年,注定是要被历史铭记的一年,除了肆虐全球的新冠病毒,网络“疫情”也没有消停,各种新型勒索病毒不断涌现,黑客组织陆续壮大,甚至不少国外一些主流的勒索病毒运营团队在国内寻找勒索病毒分销运营商,通过暗网与国外运营商进行合作,进行勒索病毒的分发传播,谋取暴利。一、2020年勒索病毒事件在魔幻的2020年,从勒索病毒新面孔WannaRen火上热搜,到知名B站UP主被勒索后在线求助,可以看出勒索病毒依然是网络病毒中的“顶流”。下面我们来盘点部分2020年全球勒索病毒大事件。3月,特斯拉、波音、

JavaSE新特性_javase 特性-程序员宅基地

文章浏览阅读181次。目录枚举Enum类枚举中定义其他结构枚举实现接口注解@override 准确覆写@Deprecate 过期声明@SuppressWarnings 压制警告接口定义加强Lambda表达式 方法引用引用类中静态方法引用某个对象的方法调用类中普通方法引用类中的构造方法枚举我们首先来看一下枚举是怎么用的?下面是一个简单的例子。..._javase 特性

Python+Selenium UI自动化之元素定位方式_python ui自动化判断元素是否存在-程序员宅基地

文章浏览阅读1.3k次。1. 网页元素介绍?元素: 由标签头+标签尾+标签头和标签尾包括的文本内容元素的信息就是指元素的标签名以及元素的属性元素的层级结构就是指元素之间相互嵌套的层级结构元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位。2. 浏览器开发者工具介绍浏览器开发者工作主要用来查看元素的信息, 同时也可以查看接口的相关信息。 浏览器开发者工作不需要安装,浏览器自带. 浏览器开发者工具的启动: 直接按F12 不区分浏览器 通过右键的方式来启动浏览器开发者工具 (谷歌浏览器右.._python ui自动化判断元素是否存在

中国程序员独立开发9年、最受欢迎的开源Redis客户端——被Redis公司收购-程序员宅基地

文章浏览阅读29次。ioredis 作者@Luin宣布该项目已被 Redis 公司收购。目前 ioredis 在 GitHub 的开源地址已迁移至 Redis 公司旗下:ioredis 是一个用于 Node.js 的 Redis 客户端,健壮、性能好、功能强大且全面。两年前,ioredis超过redis 成为了 Node.js 最流行的 Redis 客户端。当时 ioredis 作者还感叹 redis 历经诸...

随便推点

U盘使用TransMac软件格式化之后用不了,已解决!_transmac格式化u盘导致无法读取-程序员宅基地

文章浏览阅读2.9w次,点赞2次,收藏4次。有一天,上网查查Android的知识点(我是初学者),不经意的碰到黑苹果这个概念,因为没用过白苹果,所以有个想折腾的想法,于是从此深入大坑。教程是网上的,是用TransMac格式化的U盘,后面折腾了半天,启动卡在苹果LOGO,生命在于折腾。我不怕。。。。。—___—这个是题外话了。后面因为要用到U盘(不是黑苹果的事了),突然发现U盘用不了了,格式化也不行,用DG也不行(有人说可以),然后网上找..._transmac格式化u盘导致无法读取

毕设问题杂谈_blender怎么解除蒙皮-程序员宅基地

文章浏览阅读3k次。一、maya模型通过mixamo绑定后,发现有模型重叠需要删改,在Maya中删除后导出fbx后总是空集。发现是个fbx导出问题,MAYA做了动画的模型导出FBX,动画好好的,但部分模型没了???【maya吧】_百度贴吧这样操作后会取消蒙皮绑定,于是我去blender里 通过betterfbx插件导入,在编辑模式中删除了多余模型,之后再betterfbx导出,fbx模型绑定都在,进入unity也没问题,应该就是个Mayafbx插件问题。(小白见解)二、..._blender怎么解除蒙皮

基于手机蓝牙的arduino遥控小车_sumjess-程序员宅基地

文章浏览阅读4.1w次。遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激。小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序。看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大家讲解。本文为基于arduino的手机蓝牙遥控小车基于arduino的手机蓝牙遥控小车基于arduino的红外遥控小车基于arduino的无线NRF24L01遥控小车基于ardu..._sumjess

document对象常用的属性和方法_document属性-程序员宅基地

文章浏览阅读1.1w次,点赞5次,收藏28次。一、对象的属性1.document.title //设置文档的标题(HTML的title标签)2.document.bgColor //设置背景页面的颜色3.document.fgColor //设置前景色(文本颜色)4.documen.URL //设置URL属性在同一个窗口打开其他页面5.document.linkColor //未点击过的链接颜色6...._document属性

【Vue五分钟】五分钟了解vue的常用实例方法_vue实例方法-程序员宅基地

文章浏览阅读1.7k次,点赞7次,收藏33次。在了解vue的常用的实例方法之前,我们应该先要了解其常用的实例属性,你能了解到的vue实例属性有哪些呢?再通过实例属性了解实例方法,就会对vue有更加深的了解,快来跟我一起看看吧,千万别顽疾点赞加关注哦!!!_vue实例方法

关于pytorch膨胀卷积的程序_膨胀卷积的pytorch代码-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏11次。膨胀卷积膨胀卷积的作用是在不增加参数量的情况下,增大感受野,获得更多的特征。故论文中使用膨胀卷积。膨胀卷积的程序nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias)膨胀卷积中,padding与dilation所使用的因子需要是相同的,否则,可能会导致图像的尺寸会发生变化,导致就不是膨胀_膨胀卷积的pytorch代码