GVKun编程网logo

docker-machine create -d generic 运行的波折过程及遇见的问题(docker in practice)

17

本文将分享docker-machinecreate-dgeneric运行的波折过程及遇见的问题的详细内容,并且还将对dockerinpractice进行详尽解释,此外,我们还将为大家带来关于CentO

本文将分享docker-machine create -d generic 运行的波折过程及遇见的问题的详细内容,并且还将对docker in practice进行详尽解释,此外,我们还将为大家带来关于CentOs安装Docker,docker machine、Docker Engine 和 Docker Machine 介绍、Docker Engine和Docker Machine介绍、Docker Engine和Docker Machine是什么的相关知识,希望对你有所帮助。

本文目录一览:

docker-machine create -d generic 运行的波折过程及遇见的问题(docker in practice)

docker-machine create -d generic 运行的波折过程及遇见的问题(docker in practice)

这是一个愚蠢的学习过程,但是因为觉得过程还是值得记录的,还是写了下来

2》driver = generic

1) 在这个过程中使用的都是本地的 mac 系统,然后尝试在 mac 本地 create -d generic

一直不成功,出现下面的错误:

Error creating machine: Error waiting for machine to be running: Maximum number of retries (60) exceeded

原因是:

 1.--generic-ip-address 标志后面跟着的是本机的 IP 地址,如果需要为其他远程 docker 主机安装可以改为其他 docker 主机 ip(这里是本地创建 docker-machine)

2.docker-machine 为本机创建 machine 时也需要进行 ssh 认证:

首先:

userdeMacBook-Pro:~ user$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: //输入密码后就生成了下面的两个文件 Your identification has been saved in /Users/user/.ssh/id_rsa. //身份证明存储的地方 Your public key has been saved in /Users/user/.ssh/id_rsa.pub. //公钥存储的地方 The key fingerprint is: SHA256:LuENCV9NZ3V9UimQA... user@userdeMacBook-Pro.local The key''s randomart image is: +---[RSA 2048]----+ | ..EB.=*=...=| | o.=o Bo*=..oo| | o.o+.o ++o o..| | .+ + ..o o | | . * S o . | | o * o | | o o . | | . | | | +----[SHA256]-----+

然后在 / Users/user/.ssh 路径下生成了两个文件:

然后:

userdeMacBook-Pro:~ user$ ssh-copy-id root@10.240.203.84
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: ERROR: ssh: connect to host 10.240.203.84 port 22: Connection refused

出错

问题解决办法:在系统偏好 - 共享中如下图所示打开远程登录的服务设置:

但是再次运行又有错:

userdeMacBook-Pro:~ user$ ssh-copy-id root@10.240.203.84
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub" The authenticity of host ''10.240.203.84 (10.240.203.84)'' can''t be established. ECDSA key fingerprint is SHA256:lxCneM/Qbhue5WAitBgdHe5sMP1+HLYyItAR9OwSdcs.

解决办法 —— 参考 https://www.cnblogs.com/gauze/p/5554840.html

这是因为 ssh 会把你每个你访问过计算机的公钥 (public key) 都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH 会核对公钥。如果公钥不同,OpenSSH 会发出警告,避免你受到 DNS Hijack 之类的攻击

SSH 对主机的 public_key 的检查等级是根据 StrictHostKeyChecking变量来配置的。

默认情况下,StrictHostKeyChecking=ask。简单所下它的三种配置值:

1.StrictHostKeyChecking=no  #最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
2.StrictHostKeyChecking=ask  #默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。
3.StrictHostKeyChecking=yes #最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。

在内网的进行的一些测试,为了方便,选择最低的安全级别。

在.ssh/config(或者 /etc/ssh/ssh_config)中配置:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

 修改好配置后,重新启动 sshd 服务即可,命令为:/etc/init.d/sshd restart (或 service sshd restart )

(注:这里为了简便,将 knownhostfile 设为 /dev/null,就不保存在 known_hosts 中了)

再运行还是有问题:

userdeMacBook-Pro:~ user$ ssh-copy-id root@10.240.203.84
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Warning: Permanently added ''10.240.203.84'' (ECDSA) to the list of known hosts. Password: Password: Password: root@10.240.203.84''s password: Permission denied, please try again. root@10.240.203.84''s password: Received disconnect from 10.240.203.84 port 22:2: Too many authentication failures Disconnected from 10.240.203.84 port 22

这是因为我的用户名设置的不是 root,而是 user,所以输入的密码一直不正确,然后导致返回验证次数过多而失败的错误

该过来后再运行就成功了

下面的 ssh-copy-id 命令是复制 SSH 密钥到目标主机,开启无密码 SSH 登录

userdeMacBook-Pro:~ user$ ssh-copy-id user@10.240.203.84
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh ''user@10.240.203.84''" and check to make sure that only the key(s) you wanted were added.

登录测试:

userdeMacBook-Pro:~ user$ ssh ''user@10.240.203.84''
Enter passphrase for key ''/Users/user/.ssh/id_rsa'': Last login: Wed Jan 2 19:13:20 2019 from 10.240.203.84

然后发现可以从虚拟机远程登录本地主机:

vagrant@precise64:~$ ssh user@10.240.203.84
The authenticity of host ''10.240.203.84 (10.240.203.84)'' can''t be established. ECDSA key fingerprint is d9:ee:d9:d8:1e:9e:b1:a3:df:bd:c1:b9:1c:13:f2:c4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ''10.240.203.84'' (ECDSA) to the list of known hosts. Password: Last login: Wed Jan 2 19:17:27 2019 from 10.240.203.84

但是还是出错了:

userdeMacBook-Pro:~ user$ docker-machine create --engine-registry-mirror=https://hes89po0.mirror.aliyuncs.com --driver generic --generic-ip-address=10.240.203.84 --generic-ssh-key /Users/user/.ssh/id_rsa --generic-ssh-user=user 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... Enter passphrase for key ''/Users/user/.docker/machine/machines/vm/id_rsa'': Detecting the provisioner... Enter passphrase for key ''/Users/user/.docker/machine/machines/vm/id_rsa'': Error creating machine: Error detecting OS: Error getting SSH command: ssh command error: command : cat /etc/os-release err : exit status 1 output : cat: /etc/os-release: No such file or directory

上面的这个错误是 ubuntu 的 docker 版本与本机的 mac 版本不兼容的原因,所以它找不到相应的文件

 

2) 所以后面就打算换成一个 ubuntu 系统,但是中间理解错了,以为能够在本地的 mac 系统 ssh 连接虚拟机上的 ubuntu12.04 来 create,所以在纠结 ping 通的问题

然后就打算换成使用本地虚拟机之前安装的一个 ubuntu 机器,有一个问题,就是虚拟机能够 ping 通主机

 

 本地主机 ping 不通虚拟机:

解决办法:

将网卡 1 改成桥接模式

⚠️要将虚拟机重启,否则是成功不了的(重要)

然后就成功 ping 通了

 

然后就跟上面的步骤一样重新来一遍,ssh-copy-id 命令是复制 SSH 密钥到目标主机:

userdeMBP:~ user$ ssh-copy-id vagrant@10.240.203.48
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys vagrant@10.240.203.48''s password: //输入的是你目标主机的密码  Number of key(s) added: 1 Now try logging into the machine, with: "ssh ''vagrant@10.240.203.48''" and check to make sure that only the key(s) you wanted were added.

测试:

userdeMBP:~ user$ ssh ''vagrant@10.240.203.48''
Enter passphrase for key ''/Users/user/.ssh/id_rsa'': //输入你本机私钥的密码 Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ New release ''14.04.5 LTS'' available. Run ''do-release-upgrade'' to upgrade to it. Welcome to your Vagrant-built virtual machine. Last login: Thu Jan 3 03:56:04 2019 vagrant@precise64:~$ //可见成功远程连接了

然后先查看,确定目标主机本身是没有安装 docker 的,然后调用 create 为其安装:

userdeMBP:~ user$ docker-machine create --engine-registry-mirror=https://hes89po0.mirror.aliyuncs.com --driver generic --generic-ip-address=10.240.203.48 --generic-ssh-key /Users/user/.ssh/id_rsa --generic-ssh-user=user 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

但是仍然没有成功,后面才突然恍然大悟,我应该到 ubuntu 虚拟机上去执行这些步骤才对,而不是在本机上,以为是通过 ssh 来帮助其安装

 

3)打算直接在 ubuntu12.04 上运行 docker-machine create

所以所有步骤从头走一遍,先生成密钥:

然后复制密钥给本机:

上图的问题和之前的一样,这里就不管了,直接 yes 先

然后后面突然想起自己没有在该 ubuntu12.04 上安装 docker-machine 呢,然后网上大多是 16.04 版本的安装教程,所以换了个虚拟机

 

4)换成了 16.04 的 ubuntu 虚拟机

然后后面就安装了一个 ubuntu16.04 的版本,然后直接运行下面的命令,直接安装 doocker-machine:

vagrant@ubuntu-xenial:~$ 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
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    394      0 --:--:--  0:00:01 --:--:--   394
100 25.3M  100 25.3M    0     0  51350      0  0:08:37  0:08:37 --:--:-- 55686

查看版本:

vagrant@ubuntu-xenial:~$ docker-machine --version
docker-machine version 0.13.0, build 9ba6da9

生成密钥:

vagrant@ubuntu-xenial:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:B5GcbYmYFTNfZkNQQt6w0qEvY7MSPnRSHdGqQxtOoHo vagrant@ubuntu-xenial
The key''s randomart image is:
+---[RSA 2048]----+
|       =*BOBB    |
|      + =X+@..   |
|     . .=.*..    |
|    .  .++.      |
|   .  ++S+o      |
|  . Eo ==*       |
|   .  + ..       |
|       o         |
|                 |
+----[SHA256]-----+

然后复制:

vagrant@ubuntu-xenial:~$ ssh-copy-id vagrant@10.0.2.15
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/vagrant/.ssh/id_rsa.pub"
The authenticity of host ''10.0.2.15 (10.0.2.15)'' can''t be established.
ECDSA key fingerprint is SHA256:Y27AyXNovFytuIHlGpcpX2G0CZlHbgUE4WREk65rp40.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Permission denied (publickey).

但是上面的又没有成功

解决办法:

先查看 ssh 是否真的打开:

vagrant@ubuntu-xenial:~$ ps -e |grep ssh
 1582 ?        00:00:00 sshd
 1623 ?        00:00:02 sshd
 2561 ?        00:00:00 sshd

看到 sshd 即打开

然后后面找到可能是因为 vagrant 用户之前没有设置密码,导致在识别用户时无密码作为权限标识,所以提示无权限,所以为其设置密码:

vagrant@ubuntu-xenial:~$ sudo passwd vagrant
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

但是还是没有解决,然后说是还需要更改一些配置,运行:

sudo vim /etc/ssh/sshd_config

然后将下面的值都更改成 yes:

RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication yes
PasswordAuthentication yes

然后保存退出,然后运行 sudo service ssh restart 重启 ssh,然后再运行一遍就成功了:

vagrant@ubuntu-xenial:~$ ssh-copy-id vagrant@10.0.2.15
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/vagrant/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
vagrant@10.0.2.15''s password:  //输入的就是你上面设置的密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ''vagrant@10.0.2.15''"
and check to make sure that only the key(s) you wanted were added.

然后 create:

vagrant@ubuntu-xenial:~$ docker-machine create --engine-registry-mirror=https://hes89po0.mirror.aliyuncs.com -d generic --generic-ip-address=10.0.2.15 --generic-ssh-key=/home/vagrant/.ssh/id_rsa --generic-ssh-user=vagrant 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...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Detecting the provisioner...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Provisioning with ubuntu(systemd)...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Installing Docker...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Copying certs to the local machine directory...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Copying certs to the remote machine...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Setting Docker configuration on the remote daemon...
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
Enter passphrase for key ''/home/vagrant/.docker/machine/machines/vm/id_rsa'': 
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

然后终于成功了,中间的部分都是要求输入密码的地方,不要因为它要求你输入密码过多而以为是失败了,查看:

vagrant@ubuntu-xenial:~$ docker-machine ls
NAME   ACTIVE   DRIVER    STATE     URL                    SWARM   DOCKER     ERRORS
vm     -        generic   Running   tcp://10.0.2.15:2376           v18.09.0   

但是我看别人的例子也没有需要输入这么多的密码啊?可能是还需要什么设置但是我错过了,小伙伴们有知道的可以告诉一下我

 

然后试着不指明密钥和用户看能不能生成机器,--generic-ssh-user 如果不指明,使用的是 root 用户,觉得应该是不会成功的:

vagrant@ubuntu-xenial:~$ docker-machine create --engine-registry-mirror=https://hes89po0.mirror.aliyuncs.com -d generic --generic-ip-address=10.0.2.15 vm2
Running pre-create checks...
Creating machine...
(vm2) No SSH key specified. Assuming an existing key at the default location.
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
vagrant@ubuntu-xenial:~$ docker-machine ls
NAME   ACTIVE   DRIVER    STATE     URL                    SWARM   DOCKER     ERRORS
vm     -        generic   Running   tcp://10.0.2.15:2376           v18.09.0   
vm2    -        generic   Running   tcp://10.0.2.15:2376           v18.09.0   

果然发现失败了,但是还是显示生成了 vm2 机器,生成的机器两个的 URL 是相同的,因此在一个环境上只能生成一个 docker machine, 因此一般都会使用 virtualbox

如果想要使用的是 root 用户,可以转到 /home/ubuntu 目录下,再生成 ssh-keygen 等步骤

记得将没有成功的 vm2 移除:

vagrant@ubuntu-xenial:~$ docker-machine rm vm2
About to remove vm2
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed vm2

 

CentOs安装Docker,docker machine

CentOs安装Docker,docker machine

首先需要阿里云vps,能ssh连接即可。


建议更新下。


//安装Docker
yum install -y docker-io


service docker start
看到两个OK即为启动成功。然后使用自己的docker账号登陆。


docker images查看镜像   docker pull 拉取dockerhub上的镜像


在linux系统下,docker和docker machine是分开装的,所以下一步要安装docker machine。docker machine地址

curl -L https://github.com/docker/machine/releases/download/v0.9.0-rc2/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 Engine 和 Docker Machine 介绍

Docker Engine 和 Docker Machine 介绍

Docker Engine 和 Docker Machine 介绍

[toc]

1 Docker Engine

Docker Engine 也就是 “Docker”,Docker 我们一般理解的,都是 C/S 模型,用户通过 docker client 向 docker daemon 发送 REST 请求。
Docker Engine 包括这么几个部分:

  • Docker Daemon — docker 的守护进程,属于 C/S 中的 server
  • Docker REST API — docker daemon 向外暴露的 REST 接口
  • Docker CLI — docker 向外暴露的命令行接口(Command Line API)

Docker Engine 组成图

因此,客户端访问服务端的方式有两种

  • 一种是使用命令行工具,比如 docker run, docker ps....
  • 另一种就是直接通过调用 REST API,比如发送一个 curl http 请求

备注:curl
curl 可以帮你完成你所有在浏览器上的操作,比如登录 (这就是传输数据),下载文件,上传文件等等功能

2 Docker Machine

官方解释:

Docker Machine 是一个工具,用来在虚拟主机上安装 Docker Engine,并使用 docker-machine 命令来管理这些虚拟主机

Docker Engine 运行在本地 linux 系统上。如果你当前的系统是 Linux,想在上边运行 docker 命令,你只需要下载和安装 Docker Egine 就完了。然而,如果你想在网络上,云平台上,以及本地创建 Docker host,你就需要 Docker Machine

无论是 Mac,Windows 或是 Linux,你都可以在其上安装 Docker Machine,使用 docker-machine 命令来创建和管理大量的 Docker hosts。它会自动创建主机,在主机上安装 Docker Engine,然后配置 docker client。每个被管理的主机(“machine”)都是一个 Docker 主机和一个配置过的 client 的组合。

官方给的 Docker Machine 的具体使用场景:

您可以使用 Docker Machine 来: 在 Mac 或 Windows 上安装并运行 Docker 配置和管理多个远程 Docker 主机 提供 Swarm 群集

3 Docker Machine 与 Docker Engine 概念上的区别

Docker Engine: 主要用来接收和处理 docker 命令请求的
Docker Machine:则主要用来管理 docker 化的 host (安装了 Docker Engine 的主机)

 

machine

通常,你都是在本地安装 Docker Machine。Docker Machine 包含自己的命令行客户端:docker-machine 以及 Docker Engine 的客户端:docker。你可以使用 Machine 在一个或多个虚拟机上安装 Docker Engine。这些虚拟机可以是在本地,也可以是远程的。这些虚拟化的主机可以被认为是 “machine”

4 使用 Docker Machine

在 linux 上

$ 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

检查版本

$ docker-machine version

卸载 Docker Machine

#删除可执行文件
$rm $(docker-machine)
#或者,删除您创建的机器,要单独删除每台机器
$docker-machine rm <machine-name>
#要删除所有机器
$docker-machine rm -f $(docker-machine ls -q)
$docker-machine ls
$docker-machine create --driver virtualbox default
$docker-machine env default
$eval "$(docker-machine env default)"
$docker-machine ip default
$docker-machine stop default
$docker-machine start default

参考

1 Docker Machine Overview
2 Docker Machine 是什么

本文同步分享在 博客 “SoWhat1412”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

Docker Engine和Docker Machine介绍

Docker Engine和Docker Machine介绍

Docker Engine和Docker Machine介绍

[toc]

1 Docker Engine

Docker Engine也就是“Docker”,Docker我们一般理解的,都是C/S模型,用户通过docker client向docker daemon发送REST 请求。
Docker Engine包括这么几个部分:

  • Docker Daemon — docker 的守护进程,属于C/S中的server
  • Docker REST API — docker daemon向外暴露的REST 接口
  • Docker CLI — docker向外暴露的命令行接口(Command Line API)

Docker Engine组成图

因此,客户端访问服务端的方式有两种

  • 一种是使用命令行工具,比如docker run, docker ps....
  • 另一种就是直接通过调用REST API,比如发送一个curl http请求

备注:curl
curl可以帮你完成你所有在浏览器上的操作,比如登录(这就是传输数据),下载文件,上传文件等等功能

2 Docker Machine

官方解释:

Docker Machine是一个工具,用来在虚拟主机上安装Docker Engine,并使用 docker-machine命令来管理这些虚拟主机

Docker Engine运行在本地linux系统上。如果你当前的系统是Linux,想在上边运行docker 命令,你只需要下载和安装Docker Egine就完了。然而,如果你想在网络上,云平台上,以及本地创建Docker host,你就需要Docker Machine

无论是Mac,Windows或是Linux,你都可以在其上安装Docker Machine,使用docker-machine命令来创建和管理大量的Docker hosts。它会自动创建主机,在主机上安装Docker Engine,然后配置docker client。每个被管理的主机(“machine”)都是一个Docker 主机和一个配置过的client的组合。

官方给的Docker Machine的具体使用场景:

您可以使用Docker Machine来: 在Mac或Windows上安装并运行Docker 配置和管理多个远程Docker主机 提供Swarm群集

3 Docker Machine 与 Docker Engine概念上的区别

Docker Engine: 主要用来接收和处理docker命令请求的
Docker Machine:则主要用来管理 docker化的host (安装了Docker Engine的主机)

 

machine

通常,你都是在本地安装Docker Machine。Docker Machine包含自己的命令行客户端:docker-machine以及Docker Engine的客户端:docker。你可以使用Machine在一个或多个虚拟机上安装Docker Engine。这些虚拟机可以是在本地,也可以是远程的。这些虚拟化的主机可以被认为是“machine”

4 使用Docker Machine

在linux上

$ 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

检查版本

$ docker-machine version

卸载Docker Machine

#删除可执行文件
$rm $(docker-machine)
#或者,删除您创建的机器,要单独删除每台机器
$docker-machine rm <machine-name>
#要删除所有机器
$docker-machine rm -f $(docker-machine ls -q)
$docker-machine ls
$docker-machine create --driver virtualbox default
$docker-machine env default
$eval "$(docker-machine env default)"
$docker-machine ip default
$docker-machine stop default
$docker-machine start default

参考

1 Docker Machine Overview
2 Docker Machine是什么

Docker Engine和Docker Machine是什么

Docker Engine和Docker Machine是什么

这篇文章主要介绍“Docker Engine和Docker Machine是什么”,在日常操作中,相信很多人在Docker Engine和Docker Machine是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker Engine和Docker Machine是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Docker Engine和Docker Machine介绍

1 Docker Engine

Docker Engine也就是“Docker”,Docker我们一般理解的,都是C/S模型,用户通过docker client向docker daemon发送REST 请求。
Docker Engine包括这么几个部分:

  • Docker Daemon — docker 的守护进程,属于C/S中的server

  • Docker REST API — docker daemon向外暴露的REST 接口

  • Docker CLI — docker向外暴露的命令行接口(Command Line API)

Docker Engine和Docker Machine是什么

Docker Engine组成图

因此,客户端访问服务端的方式有两种

  • 一种是使用命令行工具,比如docker run, docker ps....

  • 另一种就是直接通过调用REST API,比如发送一个curl http请求

备注:curl
curl可以帮你完成你所有在浏览器上的操作,比如登录(这就是传输数据),下载文件,上传文件等等功能

2 Docker Machine

官方解释:

Docker Machine是一个工具,用来在虚拟主机上安装Docker Engine,并使用 docker-machine命令来管理这些虚拟主机

Docker Engine运行在本地linux系统上。如果你当前的系统是Linux,想在上边运行docker 命令,你只需要下载和安装Docker Egine就完了。然而,如果你想在网络上,云平台上,以及本地创建Docker host,你就需要Docker Machine

无论是Mac,Windows或是Linux,你都可以在其上安装Docker Machine,使用docker-machine命令来创建和管理大量的Docker hosts。它会自动创建主机,在主机上安装Docker Engine,然后配置docker client。每个被管理的主机(“machine”)都是一个Docker 主机和一个配置过的client的组合。

官方给的Docker Machine的具体使用场景:

您可以使用Docker Machine来: 在Mac或Windows上安装并运行Docker 配置和管理多个远程Docker主机 提供Swarm群集

3 Docker Machine 与 Docker Engine概念上的区别

Docker Engine: 主要用来接收和处理docker命令请求的
Docker Machine:则主要用来管理 docker化的host (安装了Docker Engine的主机)

machine

通常,你都是在本地安装Docker Machine。Docker Machine包含自己的命令行客户端:docker-machine以及Docker Engine的客户端:docker。你可以使用Machine在一个或多个虚拟机上安装Docker Engine。这些虚拟机可以是在本地,也可以是远程的。这些虚拟化的主机可以被认为是“machine”

4 使用Docker Machine

在linux上

$ 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

检查版本

$ docker-machine version

卸载Docker Machine

#删除可执行文件
$rm $(docker-machine)
#或者,删除您创建的机器,要单独删除每台机器
$docker-machine rm <machine-name>
#要删除所有机器
$docker-machine rm -f $(docker-machine ls -q)
$docker-machine ls
$docker-machine create --driver virtualBox default
$docker-machine env default
$eval "$(docker-machine env default)"
$docker-machine ip default
$docker-machine stop default
$docker-machine start default

到此,关于“Docker Engine和Docker Machine是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注小编网站,小编会继续努力为大家带来更多实用的文章!

关于docker-machine create -d generic 运行的波折过程及遇见的问题docker in practice的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于CentOs安装Docker,docker machine、Docker Engine 和 Docker Machine 介绍、Docker Engine和Docker Machine介绍、Docker Engine和Docker Machine是什么的相关信息,请在本站寻找。

本文标签: