如何提供和管理远程Docker与Docker机主机在CentOS 7

介绍

Docker Machine是一个工具,使您可以轻松地从个人计算机远程配置和管理多个Docker主机。 这样的服务器通常被称为Docker化主机,并且当然可以用于运行Docker容器。

虽然Docker Machine可以安装在本地或远程系统上,但最常见的方法是将其安装在本地计算机(本机安装或虚拟机)上,并使用它来部署Docker化远程服务器。

尽管Docker Machine可以安装在大多数Linux发行版以及Mac OS X和Windows上,但在本教程中,我们将在运行CentOS 7的本地计算机上安装它,并使用它来配置Dockerized DigitalOcean Droplet。

先决条件

要遵循本教程,您需要以下内容:

  • 一台运行CentOS 7的本地机器,安装了Docker。 (请参阅如何安装和在CentOS 7使用Docker的说明)
  • DigitalOcean API令牌。 如果你还没有一个,用它生成本指南 生成令牌时,请确保它具有读写范围。 这是默认值,因此如果您在生成它时不更改任何选项,它将具有读写能力。 为了更容易在命令行中使用,请务必将令牌分配给该文章中给出的变量。

第1步 - 在本地计算机上安装Docker Machine

在这一步,我们将在运行CentOS 7的本地计算机上安装Docker Machine。

要下载并安装二进制文件,请键入:

wget https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-$(uname -s)-$(uname -m)

该文件的名称应该是docker-machine-Linux-x86_64 其重命名为docker-machine ,使其更易于使用:

mv docker-machine-Linux-x86_64 docker-machine

使其可执行:

chmod +x docker-machine

移动或复制到usr/local/bin目录,以便将作为一个系统命令。

sudo mv docker-machine /usr/local/bin

检查版本,这将指示它已正确安装:

docker-machine version

输出应类似于

Outputdocker-machine version 0.6.0, build e27fb87

第2步 - 安装其他Docker机器脚本

有在Docker机的GitHub库设计,方便的使用3的bash脚本dockerdocker-machine的命令。 它们提供命令完成和bash-prompt自定义。

在这一步中,我们将在本地机器上安装这三个脚本。 它们将被下载和安装到/etc/bash_completion.d目录。

第一个脚本使您可以在bash提示符中查看活动的机器。 当你使用和在多个Dockerized机器之间切换时,这很方便。 该脚本被称为docker-machine-prompt.bash 要下载它,请键入:

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash

要完成上述文件的安装,你必须为设置自定义值PS1在变量.bashrc文件。 因此,使用打开nano (PS1是用来修改bash命令提示符下一个特殊的shell变量):

nano ~/.bashrc

复制并粘贴以下行到该文件的末尾:

〜/。bashrc
export PS1='[\u@\h \W$(__docker_machine_ps1 " [%s]")]\$ '

有了这个修改你~/.bashrc文件,当您激活一台机器,它的名字会被插入到shell提示符。

保存并关闭文件。

第二个脚本被称为docker-machine-wrapper.bash 它增加了use子命令将docker-machine的命令,因此很容易Dockerized机之间切换。 要下载它,请键入

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash

第三个脚本被称为docker-machine.bash 它增加了bash补全了docker-machine的命令。 使用下载:

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash

要应用您迄今为止所做的更改,请关闭,然后重新打开终端。 如果您通过SSH登录到计算机,请退出会话并再次登录。 在命令完成dockerdocker-machine命令现在应该工作。 如果它不工作,它很可能是bash-completion包没有安装。 如果是这样,请使用以下命令安装:

sudo yum install bash-completion

这应该解决它。

第3步 - 使用Docker Machine配置Docker化主机

现在,你有Docker和Docker机在本地机器上运行,你现在可以提供一个DockerizedDroplet使用Docker机的您的帐户DigitalOcean docker-machine create命令。 如果您还没有这样做,请使用以下方法将DigitalOcean API令牌分配给bash变量:

export shell-variable=your-api-token

注:本教程使用DOTOKEN作为DO API令牌bash的变量。 变量名称不必是DOTOKEN,它不必在所有大写。

为了使变量永久性的,把它放在你~/.bashrc文件。 此步骤是可选的,但如果您希望该值在终端会话中保持不变,则此步骤是必需的。

nano ~/.bashrc

在任何地方添加类似于此处的线:

~/.bashrcexport DOTOKEN=your-api-token

要激活当前终端会话中的变量,请键入:

source ~/.bashrc

要调用docker-machine create命令成功,你必须指定(至少)的驱动程序,API令牌(或计算它的变量),并为远程主机的唯一名称。 要创建第一个Docker化主机,请键入:

docker-machine create --driver digitalocean --digitalocean-access-token $DOTOKEN machine-name

正在创建主机的部分输出如下。 在此输出中的主机名centos-docker

Output
 ...

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 i up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env centos-docker

一个SSH密钥对新主机创建的,这样docker-machine可以远程访问。 Droplet提供了所需的操作系统,Docker安装在系统上。 当命令完成后,您的Docker Droplet启动并运行。

要从命令行查看新创建的主机,请键入:

docker-machine ls

输出应类似于:

OutputNAME                ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
centos-docker   -        digitalocean   Running   tcp://104.236.120.71:2376           v1.11.1

第4步 - 在创建Docker主机时指定基本操作系统

这个步骤显示了如何指定正在与创建的Dockerized主机基本操作系统和版本--digitalocean-image标志。

例如,要使用CentOS 7创建Docker化主机,请键入:

docker-machine create --driver digitalocean --digitalocean-image centos-7-x64 --digitalocean-access-token $DOTOKEN machine-name

如果你想在你的服务器上运行Debian 8怎么办? 您将键入以下命令:

docker-machine create --driver digitalocean --digitalocean-image debian-8-x64 --digitalocean-access-token $DOTOKEN machine-name

缺省情况下,建立一个Dockerized主机Docker机时所用的碱操作系统被认为是最新的版本(或最新的LTS版本为Ubuntu)。 然而,在这个刊物的时候, docker-machine create仍在使用Ubuntu 15.10作为基本操作系统命令,尽管Ubuntu的16.04是最新的LTS版本。 所以,如果你需要运行的Ubuntu 16.04,你必须通过传递与所需的版本一起指定的Ubuntu --digitalocean-image标志的docker-machine create命令:

docker-machine create --driver digitalocean --digitalocean-image ubuntu-16-04-x64 --digitalocean-access-token $DOTOKEN machine-name

基本操作系统不是唯一的选择。 您还可以指定Droplet的大小。 默认情况下,它是最小的Droplet,它有512 MB的RAM和20 GB SSD。 下一个示例为主机提供1 GB RAM:

docker-machine create --driver digitalocean --digitalocean-size 1gb --digitalocean-access-token $DOTOKEN machine-name

要查看特定于使用DigitalOcean驱动程序创建Docker机器的所有标志,请键入:

docker-machine create --driver digitalocean -h

提示:如果你现在刷新DigitalOcean仪表板的Droplet页面,你应该看到您在使用创建的新主机docker-machine命令。

第5步 - 执行其他Docker机器命令

你已经看到了如何规定使用一个Dockerized主机create子命令。 你也看到了如何列出可用来Docker机使用的主机ls子命令。 在此步骤中,您将了解一些更多的其他的docker-machine的子命令。

要获取有关Dockerized主机的详细信息,请使用inspect子命令,如下所示:

docker-machine inspect machine-name

输出应包括这样的行。 图像揭示线所使用的Linux发行版本:

Output...

"DropletName": "",
"Image": "centos-7-0-x64",
"Region": "nyc3",
"SSHKeyID": 1912961,
"Size": "512mb",
"IPv6": false,
"Backups": false,
"PrivateNetworking": false,



---

要打印主机的连接配置,请键入:

docker-machine config machine-name

输出应类似于:

Output--tlsverify
--tlscacert="/home/kamit/.docker/machine/certs/ca.pem"
--tlscert="/home/kamit/.docker/machine/certs/cert.pem"
--tlskey="/home/kamit/.docker/machine/certs/key.pem"
-H=tcp://45.55.183.145:2376

在输出的最后一行docker-machine config命令显示的主机的IP地址,但你也可以通过键入得到一条信息:

docker-machine ip machine-name

如果你需要一台远程主机关机时,可以使用docker-machine停止它:

docker-machine stop machine-name

验证它是否已停止。

docker-machine ls

主机的状态已更改:

OuputNAME                 ACTIVE   DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS
centos-docker                  digitalocean   Timeout

要再次启动它:

docker-machine start machine-name

验证它是否已启动:

docker-machine ls

你会看到STATE现在设置Running主机:

OuputNAME                 ACTIVE   DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS

centos-docker         -        digitalocean   Running   tcp://159.203.117.16:2376           v1.11.1

最后,如果要删除主机:

docker-machine rm machine-name

第6步 - 通过SSH在Dockerized主机上执行命令

在这一点上,你已经得到关于你的主机的信息,但你可以做更多。 例如,您可以执行由使用本地LinuxDocker主机上的命令ssh的子docker-machine从本地系统。 本节将介绍如何执行ssh通过命令docker-machine以及如何打开一个SSH会话到Dockerized主机。

假设您已经配置了使用CentOS作为操作系统的主机,请从本地系统执行以下命令来更新Docker主机上的软件包:

docker-machine ssh machine-name yum update

不确定你的远程Docker主机使用什么内核? 键入以下内容:

docker-machine ssh machine-name uname -r

除了使用ssh子命令远程Docker主机上执行命令,你也可以用它来登录到Dockerized主机本身。 这和输入一样简单:

docker-machine ssh machine-name

您的命令提示符将更改以反映您已登录到远程主机的事实:

root@machine-name#

要从远程主机退出,只需键入:

exit

第7步 - 激活Docker化主机

激活Docker主机本地Docker客户端连接到系统,这使得它可以运行正常docker在远程系统上的命令。 要激活Docker主机,请键入以下命令:

eval $(docker-machine env machine-name)

或者,您可以使用此命令激活它:

docker-machine use machine-name

提示当处理多个泊坞主机工作时, docker-machine use的命令是从一个切换到另一最简单的方法。

输入任何上述命令后,您的bash提示应该更改,以指示您的Docker客户端指向远程Docker主机。 它将采取这种形式。 主机名将在提示符的结尾:

username@localmachine:~ [machine-name]$

现在,任何docker ,你在这个命令提示符下键入命令将远程主机上执行。

如果主机是在终端上主动docker-machine ls命令运行, 活动栏下的星号表明,它是活动之一。

Output NAME         ACTIVE            DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS
centos-docker   *        digitalocean   Running   tcp://45.55.183.145:2376            v1.11.1   

注:当主机处于活动状态,任何docker你,你使用的终端上键入命令将在远程主机上执行。 但是,所有正常的Linux命令都在本地计算机上执行。

要从远程Docker主机退出,请键入以下内容:

docker-machine use -u

您将返回到本地系统的提示。

第8步 - 在远程Docker主机上创建Docker容器

到目前为止,您已经在您的DigitalOcean帐户上配置了一个Dockerized Droplet,并且已经激活它,也就是说,您的Docker客户端指向它。 下一个逻辑步骤是旋转它上面的容器。 例如,让我们尝试运行官方Nginx容器。

当仍然指向你的Docker主机(由改变的提示符指示),执行这个命令运行Nginx容器:

docker run -d -p 8080:80 --name httpserver nginx

在此命令中,我们将Nginx容器中的端口80映射到Docker化主机上的端口8080,以便我们可以从任何位置访问默认的Nginx页面。

如果成功执行了命令,你就可以通过Web浏览器指向访问默认Nginx的网页http:// machine-ip :8080

虽然Docker主机仍然被激活(如提示中的名称所示),您应该能够列出该主机上的映像:

docker images

输出应包括您刚才使用的Nginx图像,以及您之前下载的其他图像:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              3edcc5de5a79        14 minutes ago      182.7 MB
mariadb             latest              f7ef3a80dc89        2 days ago          382.2 MB
hello-world         latest              94df4f0ce8a4        3 days ago          967 B

您还应该能够在主机上列出活动或正在运行的容器:

 docker ps

如果在此步骤中运行的Nginx容器是唯一的活动容器,则输出应如下所示:

OutputCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
c30e8c1bb03f        nginx               "nginx -g 'daemon off"   14 minutes ago      Up 14 minutes       443/tcp, 0.0.0.0:8080->80/tcp   httpserver

要退出提示远程主机,输入exit 这将关闭终端:

exit

提示:如果您打算在远程主机上创建容器,你Docker客户端必须指向它-也就是说,它必须是在终端活动主机您使用。 否则,您将在本地计算机上创建容器。 让你的命令提示符作为你的指导。

第9步 - 禁用崩溃报告(可选)

默认情况下,每当尝试使用Docker Machine配置Docker主机失败或Docker Machine崩溃时,一些诊断信息会自动发送到Bugsnag上的Docker帐户。 如果你不舒服,你可以通过创建一个空文件禁用该报告被称为no-error-report您的安装下.docker/machine目录。

要完成它,只需键入:

touch ~/.docker/machine/no-error-report

如果配置失败或Docker计算机崩溃,请检查文件以获取错误消息。

结论

这是介绍安装和使用Docker Machine从一个本地系统远程配置多个Docker Droplet。 现在,您应该能够根据需要在您的DigitalOcean帐户上快速配置尽可能多的Dockerized主机。

欲了解更多关于Docker机,请访问官方文档页面 在本教程下载三个的bash脚本托管在此页面GitHub的

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏