10. 基于Docker的功能拓展¶
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中, 然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,并且性能开销极低。
我们可以使用Docker对DoorNet方便且简单的进行功能拓展。
10.1. portainer¶
为了方便大家操作,我们安装一个基于WEB的Docker管理工具。虽然基于Luci的Dcoker管理工具已经很优秀了, 但是他的功能还是有一定的局限性,这里我们推荐使用portainer来对Docker进行管理。 同时portainer本身就是就是一个Docker镜像,通过portainer的安装过程,来体验如何安装我们的第一个Docker镜像。
10.1.1. portainer安装¶
打开终端,输入以下命令,拉取镜像并启动容器。
1 2 3 4 5 | #拉取Docker镜像
docker pull portainer/portainer-ce:linux-arm64
#运行Docker容器
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name portainer portainer/portainer-ce:linux-arm64
|

在以上操作完成之后,打开 Docker -> 容器,查看portainer是否成功启动并运行。

如果正常运行,我们打开 http://192.168.1.1:9000 进入portainer。
10.1.2. 创建管理用户¶
首先我们要给portainer创建一个管理用户,设置好用户名和密码之后,我们点击 Create user 创建用户。
提示
太简单的密码会导致用户创建失败

创建管理账户之后,我们选择连接到Docker容器,就能进入到portainer的主界面了。

在portainer的主界面,显示了已经连接的机器的基本参数,使用portainer可以进行Docker集群的管理, 这里只有local一个,我们可以点开查看详情。

10.1.3. 基础操作¶
在local的详细页面中,可以查看已经拉取的镜像,创建的容器,以及存储映射和网络等。 这里我们简单的演示一下镜像的拉取及运行,更详细的使用方法请查看 https://www.portainer.io

这里以Ubuntu系统的Docker镜像为例。
10.1.3.1. 获取镜像¶
Docker镜像可以自己使用Dockerfile构建或在镜像托管仓库找到。
这里我们在Docker镜像托管网站 https://hub.docker.com 得到Ubuntu的Docker镜像。
访问dockerhub之后,我们在页面顶部搜索栏输入Ubuntu,找到官方仓库。

点击Tags,查看不同的版本标签来选择。我们使用的操作系统的Linux,处理器架构为arm64,要选择对应版本。
我们拉取最新的镜像,也就是TAG标签为latest。可以看到这个镜像支持Linux和arm64/v8架构。

10.1.3.2. 拉取镜像¶
返回portainer,打开image条目,在image一栏输入我们要拉取的镜像及其标签, 点击 Pull the Image 开始拉取镜像。

镜像拉取完成后会在下面的 Images 中出现拉取的镜像。

10.1.3.3. 创建容器¶
我们来到Container条目,开始创建一个新的容器。

点击 Add container ,输入创建容器的相关参数。
Name:容器创建后显示的名称
Image:创建容器所用的镜像
Always pull the image:每次创建容器时都会拉取镜像,保证镜像处于最新版本。
Network ports configuration:网络端口转发,这里不需要所以未设置。
Access control:访问控制,创建的容器只允许特定的用户或用户组访问。

高级设置部分,可详细设置启动容器执行的命令,磁盘映射,网络等高级设置, 这里我们只设置:
Console:Interactive&TTY 使用交互式终端

Network:网络使用host模式,与宿主机共享网络。

然后点击 Deploy the contalner 创建容器。创建成功之后会自动跳转到 Container list

10.1.3.4. 交互¶
如何证明我们运行Ubuntu的容器正常运行呢?我们使用交互式终端进入Ubuntu系统, 使用一些命令来对Ubuntu进行操作。
点击 >_ 按钮进行设置。

默认设置即可,我们点击Connect进入终端。

我们尝试给Ubuntu安装软件,可以看到不管是更新软件包列表还是安装软件,都是没有问题的。


10.1.3.5. 删除容器¶
当我们不再使用创建的Docker镜像时,为了不占用资源,就会选择删除。
具体的操作是:
选中要删除的容器。
点击 Remove 按钮。
弹出的确认界面选择Remove。

10.1.3.6. 删除镜像¶
当镜像的版本发生了更新或者不再有容器使用这个个镜像时,为了释放存储空间,会选择删除这个镜像。
具体的操作是:
打开 Image list 页面。
选中要删除的镜像。
点击 Remove 按钮。
