首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 Docker 在卡片机上打造经济、高效的家用服务器集群(三)

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分 与您不见不散

说在前面

这是本教程的第二篇文章,我将详细介绍如何在“家庭版实验室”中的少数几台物理服务器上设置应用程序。我将本篇文章分为两个小节,第一小节我将介绍主机的选择、使用的操作系统以及安装 Docker 这三个部分。本周三将为大家带来第二小节的内容,期待您的关注。还可以点击下列文章标题,查看系列教程:

Pine64

正如上一篇文章提到的(详情请参考系列教程),我用小小的 Pine64 卡片机来托管我的服务。它们对于这个用例来说是非常理想的,既不占用太多空间,也不消耗太多电量,而且性能足够强大。Pine64 和 Rock 64 卡片机都具有64位 ARMv8 处理器,可用内存从512 MB到4 GB不等。我目前的服务器设置有点混杂,包含了1 GB 、2 GB 和4 GB 内存的卡片机。

这个群集的优点在于,您可以随时在有需要的时候添加新设备。Docker 真的不在乎您是否在相同的甚至是类似的服务器上运行。

我唯一不满意的地方就是购买这些卡片机需要一段漫长的配送时间,因为这些卡片机产地来自中国,它们可能需要将近一个月才能抵达英国(中国的朋友们,你们可以不用长时间的等待就可以买到这些卡片机,真的很棒)。如果身处英国的朋友们不想长时间等待的话,那么您可以购买 Raspberry Pi 3 (第3代树莓派),它也具有类似的 ARMv8 CPU ,并且更容易从本地分销商处购买。它也是一款价格在50美元左右的卡片机,能够在基于 Debian 的32位官方 Raspbian 发行版上运行,或者您也可以从社区中找到64位的镜像。HypriotOS 的制造商利用该设备做了一件非常酷的事情,他们将操作系统针对 Docker进行了优化,使其能够更好地支持 Docker 。

如果您决定使用树莓派了,那么您一定要参考Alex Ellis的博客!他的博客中有大量 Docker 的使用教程。您也可以关注 Docker 官方公众号(docker-cn),我们会持续为大家带来 Docker 的使用教程与实战案例。

树莓派的最大可用内存为1 GB ,我需要一些可以充分运用现有内存的应用程序,比如 Java 虚拟机上的Elasticsearch。

Elasticsearch :

(浏览 https://www.elastic.co/products/elasticsearch 查看详情);

Armbian

Pine64社区提供了非常多的 Linux 发行版本。我需要一些可以与 Docker 配合默契的Linux 发行版,Debian 或 Ubuntu 无疑是很好的选择。这个被称作 Armbian 的家伙为很多的 ARM 芯片提供了很棒的 Ubuntu 镜像。较老的 Pine64 有一个相当稳定且较新的内核版本。Rock64 只有一个稍微老一点的内核测试版本,但对我来说目前是够用的。

您需要为这些设备准备一个微型SD卡。我使用的是 32 GB 的 SanDisk 卡,但是说实话16 GB ,甚至是8 GB 的存储量就够用了。从网站上下载 Armbian 镜像,然后将镜像写入到准备好的 SD 卡。

$ ls -lh

-rw-r--r-- 1 xyz xyz 223M Dec 30 13:16 Armbian_5.34.171121_Rock64_Ubuntu_xenial_default_4.4.77.7z

$ 7z x Armbian_5.34.171121_Rock64_Ubuntu_xenial_default_4.4.77.7z

$ sudo cp Armbian_5.34.171121_Rock64_Ubuntu_xenial_default_4.4.77.img /dev/mmcblk0

这个过程非常简单,只需要将镜像文件解压缩并将其复制到SD卡上就可以了。这里要注意下,请确保将解压后的镜像文件写入到正确的设备(SD卡)中,而不是将它写入到笔记本电脑的硬盘中。在写入的过程中,SD卡需处于未挂载状态。

如果您不熟悉使用 Shell 界面将镜像写入 SD 卡,那么您可以查看 Etcher 和 resin.io 这两款非常实用的工具。

Etcher :

(浏览 https://etcher.io 查看详情);

resin.io :

(浏览 https://resin.io 查看详情);

将镜像文件写入到 SD 卡可能需要几分钟的时间。完成后,将 SD 卡插入到卡片机上,将卡片机连接好网络并接通电源。卡片机需要大约30-60秒的启动时间。默认情况下,安装 Armbian 会自带 SSH 访问权限和一个预定义的 root 用户,您可以在下载页面上获取密码。我通常会检查路由器的连接设备列表,找到新启动设备的IP地址,然后登录并通过 SSH 进行初始化设置。

您需要在第一次登录时更改 root 账户的密码,并且应该创建一个新用户用于进一步的操作。注销 root 账户并使用刚刚创建的用户重新登录。完成此操作后,确保时区设置框中的时区是正确的,因为有一些应用程序在集群中运行时会受到时区设置的影响。例如 Portainer 使用 JWT 身份验证时就需要时区同步。

Portainer :

(浏览 https://portainer.io 查看详情);

安装Docker

现在准备工作都已经完成,我们可以来安装 Docker 了。正如前面我所提到的,Armbian 镜像是基于 Ubuntu 系统开发的,它能够很好的支持在64位 ARMv8 平台上的 Docker。这意味着我可以使用一行命令就可以完成 Docker 的安装。

就是上面那行命令!在安装过程中,您可能会看到一些关于安装进度的警告提示,没关系一旦完成安装,您的 Docker 引擎就可以正常运行了。安装完成后,您会发现目前的用户并不能与 Docker 的守护进程进行交互,那是因为该用户缺少权限而导致的。

$ docker version

Client:

Version: 17.10.0-ce

API version: 1.33

Go version: go1.8.3

Git commit: f4ffd25

Built: Tue Oct 17 19:02:43 2017

OS/Arch: linux/amd64

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.33/version: dial unix /var/run/docker.sock: connect: permission denied

要解决这个问题,只需将该用户添加到 docker 群组中就可以了,如下列代码所示:

$ sudo usermod -aG docker $USER

$ docker version

Client:

Version: 17.10.0-ce

API version: 1.33

Go version: go1.8.3

Git commit: f4ffd25

Built: Tue Oct 17 19:02:43 2017

OS/Arch: linux/amd64

Server:

Version: 17.10.0-ce

API version: 1.33 (minimum version 1.12)

Go version: go1.8.3

Git commit: f4ffd25

Built: Tue Oct 17 19:01:22 2017

OS/Arch: linux/amd64

Experimental: false

现在,您就可以使用该用户来调用 docker 命令了(是不是非常的简单?)。如果您想测试它是否可以正常工作,那么您就可以使用以下命令来进行快速检查:

$ docker run --rm -it alpine echo 'Hello world!'

如果一切正常,那么您应该会看到它将从 Docker Hub 镜像仓库中下载 alpine 镜像,并且在屏幕中输出 Hello world! 文本。我需要再次强调下,我们不必为 Docker 指定CPU架构。目前的官方镜像(绝大部分)是多架构镜像,所以同样的命令也适用于其它平台和CPU架构。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G0TTRK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券