docker的配置与使用(docker之docker-machine用法详解)
docker的配置与使用
docker之docker-machine用法详解docker-machine 是docker官方提供的docker管理工具。
通过docker-machine可以轻松的做到:
在Windows平台和MAC平台安装和运行docker
搭建和管理多个docker 主机
搭建swarm集群
环境win下面安装的virtualbox,virtualbox安装的centos7,网络模式NAT+hostonly
ip:192.168.56.102(hostonly)
1、安装docker-machine:
curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
2、查看docker-machine版本:
# docker-machine version [root@docker ~]# docker-machine version docker-machine version 0.13.0, build 9ba6da9
3、在centos7环境下创建machine:
[root@localhost ~]# docker-machine create -d virtualbox default Creating CA: /root/.docker/machine/certs/ca.pem Creating client certificate: /root/.docker/machine/certs/cert.pem Running pre-create checks... Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
但是却报错了,以为virtualbox安装的centos7环境支持的是virtualbox驱动,才发现环境安装支持virtualbox驱动
使用virtualbox驱动需要安装virtualbox,而Ubuntu的解决方法为:
于是采用generic驱动,具体介绍查看官网:https://docs.docker.com/machine/drivers/generic/
[root@localhost ~]# docker-machine create -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --
generic-ssh-user=root vm
Running pre-create checks...
Creating machine...
(vm) Importing SSH key...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Error creating machine: Error detecting OS: Too many retries waiting for SSH to be available. Last error: Maximum number of retries (60) exceeded
--generic-ip-address=192.168.56.102:这里的ip是指本机,如果需要为其他远程docker主机安装可以改为其他docker主机ip(这里是本地创建docker-machine)
依然报错,这是由于docker-machine为本机创建machine时也需要进行ssh认证:
[root@localhost ~]# ssh-keygen [root@localhost ~]# ssh-copy-id root@192.168.56.102
将密码发给自己,然后重新继续创建machine:
[root@localhost ~]# docker-machine create -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm Running pre-create checks... Creating machine... (vm) Importing SSH key... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with centos... 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 your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env vm
于是终于创建machine成功了
查看docker-machine:
[root@localhost ~]# docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS vm - generic Running tcp://192.168.56.102:2376 v17.09.0-ce
查看vm的环境变量:
[root@localhost ~]# docker-machine env vm export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.56.102:2376" export DOCKER_CERT_PATH="/root/.docker/machine/machines/vm" export DOCKER_MACHINE_NAME="vm" # Run this command to configure your shell: # eval $(docker-machine env vm)
加载环境变量:
[root@localhost ~]# eval $(docker-machine env vm)
利用ssh登录到machine中:
[root@localhost ~]# docker-machine ssh --help Usage: docker-machine ssh [arg...] Log into or run a command on a machine with SSH. Description: Arguments are [machine-name] [command] [root@localhost ~]# docker-machine ssh vm Last login: Sat Nov 4 17:55:53 2017 from 192.168.56.102 [root@vm ~]#
现在在本地环境创建一个容器启动:
[root@localhost ~]# docker run -d --name=nginx nginx [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6e62975fab90 nginx "nginx -g 'daemon ..." About a minute ago Up 59 seconds 80/tcp nginx
然后ssh远程到docker-machine中:
[root@localhost ~]# docker-machine ssh vm Last login: Sat Nov 4 18:13:27 2017 from 192.168.56.102 [root@vm ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6e62975fab90 nginx "nginx -g 'daemon ..." About a minute ago Up About a minute 80/tcp nginx
可以看见docker主机和docker-machine主机里面的容器id相同
利用docker-machine能够安装docker和创建容器
上面是本地为自己创建machine,现在为远程的docker主机创建docker-machine:
环境:centos7,192.168.101.14,vmware下面安装的docker以及docker-machine,为192.168.56.102这台docker主机创建machine:
(两个ip不同进行了转发所以可以访问(前面是vm下面的nat的静态ip,后面是virtualbox的两张网卡(nat和host only)))
1、首先将192.168.101.14和主机192.168.56.102进行ssh连接认证:
[root@docker ~]# ssh-keygen [root@docker ~]# ssh-copy-id root@192.168.56.102
2、创建machine:
[root@docker ~]# docker-machine create -d generic --generic-ip-address=192.168.56.102 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root default Creating CA: /root/.docker/machine/certs/ca.pem Creating client certificate: /root/.docker/machine/certs/cert.pem Running pre-create checks... Creating machine... (default) Importing SSH key... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with centos... 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 your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default
执行环境变量,进入到machine环境:
[root@docker ~]# docker-machine env default [root@docker ~]# eval $(docker-machine env default)
3、查看创建的machine:
[root@docker ~]# docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - generic Running tcp://192.168.56.102:2376 v17.09.0-ce
可以看见在192.168.101.14环境上为远程主机192.168.56.102创建的machine
4、创建容器:
[root@docker ~]# docker run -d --name=nginx nginx(本地没有nginx镜像) b1f08986f6d5dbb1ede699e915bde734bab278fbe70f93af06ec2267fae2fef3 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1f08986f6d5 nginx "nginx -g 'daemon ..." 4 seconds ago Up 3 seconds 80/tcp nginx 5、ssh到machine: [root@docker ~]# docker-machine ssh default Last login: Sat Nov 4 18:51:49 2017 from 192.168.56.1 [root@default ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1f08986f6d5 nginx "nginx -g 'daemon ..." 23 seconds ago Up 22 seconds 80/tcp nginx
现在查看远程主机是否创建了容器:
[root@localhost ~]# docker ps -a could not read CA certificate "/root/.docker/machine/machines/default/ca.pem": open /root/.docker/machine/machines/default/ca.pem: no such file or directory
报错原因:
由于刚刚在192.168.56.102为自己设置了machine,保留了之前machine的环境变量,虽然现在删除了,但是设置了环境变量,将刚刚设置的环境变量取消:
[root@localhost ~]# unset DOCKER_TLS_VERIFY [root@localhost ~]# unset DOCKER_CERT_PATH [root@localhost ~]# unset DOCKER_MACHINE_NAME [root@localhost ~]# unset DOCKER_HOST
然后重新查看:
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1f08986f6d5 nginx "nginx -g 'daemon ..." 8 minutes ago Up 8 minutes 80/tcp nginx
可以发现,为远程主机创建容器成功
现在192.168.101.14上面存在镜像centos_nginx:v4,而远程主机192.168.56.102没有该镜像,现在创建容器,看是否远程主机能够创建成功?
[root@docker ~]# docker pull registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc:v4 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest b72d63324dbb 13 hours ago 108MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 2 days ago 464MB
然后在远程主机查看:
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest b72d63324dbb 13 hours ago 108MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 2 days ago 464MB
可以看见两主机的镜像同步,也是容器也是同步的
vm下面的docker可以为virtualbox下面的docker创建容器
而更多的是本地可以为云等其他环境创建容器,通过docker-machine
在这之前192.168.101.14的images都不见了,那是因为设置machine环境变量:
unset DOCKER_TLS_VERIFY unset DOCKER_CERT_PATH unset DOCKER_MACHINE_NAME unset DOCKER_HOST
执行上面将machine的环境变量取消就可以返回原来的环境了:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_init v1 383ff3502443 26 hours ago 448MB centos_nginx v8 6f792dc07c35 2 days ago 464MB centos_nginx v7 9e875385d6be 2 days ago 464MB centos_nginx v6 959fdf4d4288 2 days ago 464MB centos_nginx v5 5c1131306686 2 days ago 464MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc v4 6c5128aaff05 2 days ago 464MB 192.168.101.14:5000/centos_nginx v4 6c5128aaff05 2 days ago 464MB centos_nginx v4 6c5128aaff05 2 days ago 464MB centos_nginx v3 0e49a2c0562f 2 days ago 464MB centos_nginx v2 2031faf8894a 2 days ago 464MB centos_nginx v1 78d18f16e757 3 days ago 464MB registry latest 2ba7189700c8 9 days ago 33.3MB ubuntu latest 747cb2d60bbe 3 weeks ago 122MB centos latest 196e0ce0c9fb 7 weeks ago 197MB
而如果需要返回machine环境就继续执行machine环境变量就行,这种方式很好的隔离了本地和远程镜像和容器
到此这篇关于docker之docker-machine用法详解的文章就介绍到这了,更多相关docker machine 用法内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker启动失败容器目录结构(docker容器中安装vim问题解决)
- docker 无法启动(Docker 常见问题解决)
- ideadocker调试(Idea部署远程Docker并配置文件)
- netcorelinux后台运作(Linux系统Docker 部署 ASP.NET Core应用的流程分析)
- 自建docker镜像仓库(使用docker制作分布式lnmp 镜像)
- docker实战部署(使用docker搭建一套开发环境全家桶的详细教程)
- docker保存容器的配置文件(docker cp 拷贝文件 和 进入容器的操作)
- docker垃圾清理(docker磁盘空间清理的解决办法)
- docker compose使用方法(docker和docker-compose一键安装教程支持在线和离线)
- elasticsearch启动报错(解决Docker启动Elasticsearch7.x报错的问题)
- 实战部署nginxdocker(基于Docker、Nginx和Jenkins实现前端自动化部署)
- docker配置和启动(Docker的安装与配置命令代码实例)
- docker安装镜像失败(阿里云镜像安装docker报错的问题及解决方案)
- docker如何解绑容器(如何进入、退出docker的container实现)
- 查看docker 镜像大小(详解六种减小Docker镜像大小的方法)
- nginx代理docker容器(Docker Nginx容器制作部署实现方法)
- 经度,世界时间腕表的灵魂(世界时间腕表的灵魂)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
- 痴情男神 吴彦祖 与妻子恋爱8年,结婚10年,家庭幸福美满(痴情男神吴彦祖)
热门推荐
- linux虚拟主机怎么设置(linux系统虚拟主机开启支持Swoole Loader扩展的方法)
- 云服务器哪种操作系统好(云服务器选什么操作系统比较好?)
- mysql binlog模式实际使用(实例验证MySQL|update字段为相同的值是否会记录binlog)
- spark sql常用操作(Spark SQL数据加载和保存实例讲解)
- canvas 中增加组件(如何在Canvas中添加事件的方法示例)
- mysql缓存是什么(详解mysql查询缓存简单使用)
- django路由原理(详解django中url路由配置及渲染方式)
- pythonturtle库画图代码(用Python中的turtle模块画图两只小羊方法)
- javascript文件解压(JavaScript 如何在线解压 ZIP 文件)
- 阿里云ssl证书ip地址(阿里云申请云盾免费SSL证书https)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9