centos7下安装docker(14安装docker machine)
之前我们做的实验都是在一个host上面的,其实在真正的环境中有多个host,容器在这些host上面启动,运行,停止和销毁,相关容器会通过网络相互通信,无论他们是否运行在相同的host上面。
对于这种歌multi-host环境,我们该如何高效的进行管理呢?
第一个问题就是:为所有host安装和配置docker
之前我们手工安装了一个docker host:
1.安装https CA证书
2.添加GPG key
3.添加docker apt源
4.安装docker
对于多主机的环境手工方式效率低且不容易保证一致性,只对这个问题,docker给出的解决方案是docker machine
用docker machine可以批量安装和配置docker host,这个host可以是本地的虚拟机,物理机,也可以是公有云中的云主机
Docker Machine支持在不同环境下安装配置docker host,包括:
1.常规Linux操作系统;
2.虚拟化平台-VirtualBox,VMware,Hyper-V
3.Openstack
4.公有云-Amazon Web Services,Microsoft Azure,Google Compute Engine,Digital Ocean等
Docker Machine为这些环境起了一个统一的名字:provider
对于特定的某个provider,Docker Machine使用相应的driver安装配置docker host
安装docker machine
实验环境:主机名 IP 操作系统
docker 192.168.7.222 centos7
docker1 192.168.7.235 centos7
docker2 192.168.7.231 centos7
我将在192.168.7.222 docker上安装docker machine,然后通过docker machine命令在其他两台host上部署docker
安装docker machine,参照官方文档:https://docs.docker.com/machine/install-machine/#install-machine-directly
执行docker-machine version验证命令是否可用
注:建议根据官方文档搭建
安装bash completion script,这样bash可以通过tab来补全命令和参数:
下载completion script:docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash 将其放在/etc/bash_completion.d目录下
命令为:scripts=( docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash ); for i in "${scripts[@]}"; do sudo wget https://raw.githubusercontent.com/docker/machine/v0.13.0/contrib/completion/bash/${i} -P /etc/bash_completion.d; done
然后将如下代码添加到~/.bashrc
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
若出现一下情况:
更改~/.bashrc,在bashrc中添加以下三行:
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
重新source下bashrc
source /root/.bashrc
到此位置docker-machine就安装完成了!
如何卸载docker-machine,可以参考官方文档!
创建machine
对于docker machine来将,术语Machine就是运行docker daemon的主机,创建machine就是在host上安装docker
执行docker-macine ls查看当前的machine
当前还没有一个machine,接下来我们创建第一个machine:docker1-192.168.7.235
创建machine要求能够无密码远程登陆主机,所以需要下通过如下命令将ssh key拷贝到192.168.7.235
1.ssh-keygen -t rsa 在192.168.7.222上面生成密钥
注:这里要回车三次
2.在用户的家目录下生成一个 .ssh的 目录
3.在 .ssh下存放生成的密钥文件
id_rsa :生成的私钥文件
id_rsa.pub:生成的公钥文件
如果希望公钥生效,需满足以下两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
3.将密钥拷贝到192.168.7.235里面
ssh-copy-id
4.通过ssh 192.168.7.235测试是否成功
一切准备就绪,执行docker-machine create创建第一个docker1
docker-macine create --driver generic --generic-ip-address=192.168.7.235 docker1
因为我们用的是普通的linux部署docker,所以使用generic driver通用driver,其他driver可以参考:https://docs.docker.com/machine/drivers/
我们的docker1已经创建成功,步骤如下
1.ssh远程登录主机
2.安装docker
3.复制证书
4.配置docker
5.启动docker
再次执行;docker-machine ls
现在看到docker1已经运行
我们登陆到docker1查看具体配置
在/etc/systemd/system/docker.service.d下文件名是:10-machine.conf
注:-H tcp://0.0.0.0:2376 使docker daemon接受远程连接
--tls*对远程连接启用安全认证和加密
注:主机名hostname也会被更改
使用同样的方法创建docker2
docker-machine create --driver generic --generic-ip-address=192.168.7.231 docker2
由于我忘记传送密钥,导致的报错
当我把密钥传进去后重新创建docker2时提示:docker2已经存在,通过docker-machine ls查看docker2已经处于运行的状态,无法识别docker版本
注:这里的docker的版本还不能指定,默认安装的是repo的版本
可以使用docker-machine rm -f删除docker2
重新传送密钥,然后重新创建docker2
在密钥传送不成功以及网络无法ping通baidu的情况下,终于将docker2建好了:
盗图:
管理machine:
学习无需登录machine就可以执行docker相关的命令
1.docker-machine env docker1显示访问docker1需要的所有环境变量
根据提示,执行eval $(docker-machine env docker1)
可以看到,命令提示符变成了docker1,其原因是我们之前在/root/.bashrc里面配置了 PS1='[\u@\h \W$(__docker_machine_ps1)]\$ ',用于显示当前的docker host
注:如果我们输入eval $(docker-machine env docker1)没有显示出docker1的命令提示符,我们可以重新输入一遍 PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
在此状态下执行的docker命令其效果都相当于在docker1上执行
docker-machine子命令:
docker-machine upgrate docker1 docker2批量更新docker host版本
docker-machine config docker1 查看host的docker daemon配置
docker-machine start/status/restart/kill docker1是对docker host所在的系统的操作,不是对服务的操作
docker-machine scp是在docker host之间复制
docker-machine rm docker1删除一个docker host
其他请参考
centos7下安装docker(14安装docker machine)的更多相关文章
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- centos7下源码方式安装gitlab8.9+发送邮件+ldap
CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...
- centos7下mysql5.7的安装与配置
centos7下MySQL5.7的安装与配置 下载 下载地址 根据系统和版本选择红框中的四个RPM包下载即可,然后放到centos7系统中的/opt目录下,等待稍后安装. 安装前的准备 1. 检查系统 ...
- inux centos7下源码 tar安装5.7.26详解
inux centos7下源码 tar安装5.7.26图文详解 官网地址 https://dev.mysql.com/downloads/mysql/ 1.卸载Linux系统上自带的mysql插件(o ...
- CentOS7下MySQL5.7的安装-RPM方式
Installing MySQL on Linux Using RPM Packages 下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ ...
- 在CentOS7下从0开始搭建docker并发布tomcat项目
一切从0开始,我也是个小白: 1.检查你的系统是不是高于3.8的内核,如果没有请升级CentOS7或者Ubuntu 14 #uname -a 2.CentOS7下安装docker #yum -y in ...
- CentOS7下使用Sonatype Nexus3搭建Docker私有仓库
相关资料: Sonatype Nexus3官方网站:https://www.sonatype.com/download-oss-sonatype Sonatype Nexus3 Docker Hub地 ...
- Centos7下,宿主机nginx配合docker环境的php-fpm
一.安装docker并启动 yum install docker systemctl start docker 二.安装nginxCentOS 7默认不能从yum中安装nginx,原因可以自己搜索一下 ...
- CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]
一 CentOS下通过rpm方式安装MySQL CentOS版本:CentOS-7 MySQL版本:MySQL-5.6.22 在网上搜了一下,Linux下安装MYSQL有三种方式: 1) 通过yum命 ...
- Centos7下Redis3.2的安装配置与JReid测试
环境 Centos7 Redis版本 3.2.0 安装目录 /usr/local/redis/redis-3.2.0 Redis的介绍 参见官网 安装 1 安装gcc与tcl # yum instal ...
随机推荐
- Java IO(2)阻塞式输入输出(BIO)
在上文中<Java IO(1)基础知识——字节与字符>了解到了什么是字节和字符,主要是为了对Java IO中有关字节流和字符流有一个更好的了解. 本文所述的输出输出指的是Java中传统的I ...
- Java 注解原理
下面来看看Java中注解是如何实现的 创建注解类Inter: 创建测试类Test: 在程序第二句设置断点,可以看到: 可以看到,注解的实例是一个动态代理类的对象. 要想查看这个动态代理类,可以在代码中 ...
- 【 js 工具 】如何在Github Pages搭建自己写的页面?
最近发现 github 改版了,已没有像原来的 Launch automatic page generator 这样的按钮等,所以我对我的文章也进行了修正,对于新版来说,步骤更加简单了.欢迎享用. - ...
- react-router 嵌套路由 内层route找不到
今天在做嵌套路由的时候,没有报错,但是页面显示为空,搜索了一下资料,有两个原因: 1.exact精确匹配 <Route component={xxx} path="/" /& ...
- yarn安装ant-报错
异常现象: 使用react引用antd的库时报错 yarn add antd Trace: Error: connect ETIMEDOUT 114.55.80.225:80 at Object._e ...
- Activity切换的时候生命周期的变化
之前在做笔试题的时候遇到一个问题:Activity A切换到ActivityB时,A和B的生命周期变化. 事实上,它们的生命周期变化是这样的: 1.A的onPause()方法被执行. 2.B的onCr ...
- android build 编译打印详细过程
我们在make otapackage编译android代码的时候,有时候需要跟踪详细的过程,包括所有的过程,可以修改build/core/Makefile,赋值hide := 为空即可
- Python 爬虫实例(爬百度百科词条)
爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入 ...
- ERROR 3009 (HY000): Column count of mysql.user is wrong…..
在测试备份还原时,使用XtraBackup还原数据库后,创建一个测试账号时遇到了下面错误: mysql> grant all on house.* to test@'192.168.%' ide ...
- 如何实现javascript js 类命名空间的写法
转载 猫猫小屋http://www.maomao365.com/?p=823 在C#中有namespace概念,java中有package的概念,有了这些概念之后,在系统的运行时,每一个方法就会拥有唯 ...