技术标签: docker
什么是Docker Machine?
Machine是一个简化安装Docker环境的工具。怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装。市场上主流Linux系统版本很多,每次安装岂不有些麻烦。使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。
另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理LXC容器技术。我个人理解是这样的,具体Docker官方初衷设计如何,还需进一步探索。
注意:Machine安装docker环境中会因网络或其他情况造成安装失败,使用中发现,这种安装失败频率很高,感觉没有使用的价值,说白了,一个公司操作系统一般不会超过两个发行版,写个脚本一键安装也许会更方便!
1、先看下Docker Machine支持Docker以什么为虚拟化技术的驱动
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
文章浏览阅读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);第一步可..._牛客网青蛙跳台阶
文章浏览阅读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++
文章浏览阅读1.5k次。2020年,注定是要被历史铭记的一年,除了肆虐全球的新冠病毒,网络“疫情”也没有消停,各种新型勒索病毒不断涌现,黑客组织陆续壮大,甚至不少国外一些主流的勒索病毒运营团队在国内寻找勒索病毒分销运营商,通过暗网与国外运营商进行合作,进行勒索病毒的分发传播,谋取暴利。一、2020年勒索病毒事件在魔幻的2020年,从勒索病毒新面孔WannaRen火上热搜,到知名B站UP主被勒索后在线求助,可以看出勒索病毒依然是网络病毒中的“顶流”。下面我们来盘点部分2020年全球勒索病毒大事件。3月,特斯拉、波音、
文章浏览阅读181次。目录枚举Enum类枚举中定义其他结构枚举实现接口注解@override 准确覆写@Deprecate 过期声明@SuppressWarnings 压制警告接口定义加强Lambda表达式 方法引用引用类中静态方法引用某个对象的方法调用类中普通方法引用类中的构造方法枚举我们首先来看一下枚举是怎么用的?下面是一个简单的例子。..._javase 特性
文章浏览阅读1.3k次。1. 网页元素介绍?元素: 由标签头+标签尾+标签头和标签尾包括的文本内容元素的信息就是指元素的标签名以及元素的属性元素的层级结构就是指元素之间相互嵌套的层级结构元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位。2. 浏览器开发者工具介绍浏览器开发者工作主要用来查看元素的信息, 同时也可以查看接口的相关信息。 浏览器开发者工作不需要安装,浏览器自带. 浏览器开发者工具的启动: 直接按F12 不区分浏览器 通过右键的方式来启动浏览器开发者工具 (谷歌浏览器右.._python ui自动化判断元素是否存在
文章浏览阅读29次。ioredis 作者@Luin宣布该项目已被 Redis 公司收购。目前 ioredis 在 GitHub 的开源地址已迁移至 Redis 公司旗下:ioredis 是一个用于 Node.js 的 Redis 客户端,健壮、性能好、功能强大且全面。两年前,ioredis超过redis 成为了 Node.js 最流行的 Redis 客户端。当时 ioredis 作者还感叹 redis 历经诸...
文章浏览阅读2.9w次,点赞2次,收藏4次。有一天,上网查查Android的知识点(我是初学者),不经意的碰到黑苹果这个概念,因为没用过白苹果,所以有个想折腾的想法,于是从此深入大坑。教程是网上的,是用TransMac格式化的U盘,后面折腾了半天,启动卡在苹果LOGO,生命在于折腾。我不怕。。。。。—___—这个是题外话了。后面因为要用到U盘(不是黑苹果的事了),突然发现U盘用不了了,格式化也不行,用DG也不行(有人说可以),然后网上找..._transmac格式化u盘导致无法读取
文章浏览阅读3k次。一、maya模型通过mixamo绑定后,发现有模型重叠需要删改,在Maya中删除后导出fbx后总是空集。发现是个fbx导出问题,MAYA做了动画的模型导出FBX,动画好好的,但部分模型没了???【maya吧】_百度贴吧这样操作后会取消蒙皮绑定,于是我去blender里 通过betterfbx插件导入,在编辑模式中删除了多余模型,之后再betterfbx导出,fbx模型绑定都在,进入unity也没问题,应该就是个Mayafbx插件问题。(小白见解)二、..._blender怎么解除蒙皮
文章浏览阅读4.1w次。遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激。小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序。看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大家讲解。本文为基于arduino的手机蓝牙遥控小车基于arduino的手机蓝牙遥控小车基于arduino的红外遥控小车基于arduino的无线NRF24L01遥控小车基于ardu..._sumjess
文章浏览阅读1.1w次,点赞5次,收藏28次。一、对象的属性1.document.title //设置文档的标题(HTML的title标签)2.document.bgColor //设置背景页面的颜色3.document.fgColor //设置前景色(文本颜色)4.documen.URL //设置URL属性在同一个窗口打开其他页面5.document.linkColor //未点击过的链接颜色6...._document属性
文章浏览阅读1.7k次,点赞7次,收藏33次。在了解vue的常用的实例方法之前,我们应该先要了解其常用的实例属性,你能了解到的vue实例属性有哪些呢?再通过实例属性了解实例方法,就会对vue有更加深的了解,快来跟我一起看看吧,千万别顽疾点赞加关注哦!!!_vue实例方法
文章浏览阅读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代码