最近入手了一台单反相机,于是照片的储存量刷刷的往上涨。这里秀一下随手拍的照片
但是照片只存在pc机上,想随时随地用手机、笔记本、访问一下就非常麻烦,还需要接线去传输,用微软的OneDrive又经常连不上,而且同步速度非常慢。不久之前,参加社区活动到了一块树莓派3B+
于是着手开始用这块树莓派搭建一个能全平台访问的存储应用。查了一定的资料,确定Nextcloud作为当前的解决方案。Nextcloud不仅能够通过浏览器访问,同时在安卓Googleplay、ios平台,Desktop平台都有客户端,可以随时随地方便的实现文件照片的全平台同步。
闲话到此,接下来开始说明具体的部署步骤。首先引入我们此次使用的一个重要工具Docker:
Docker是一种虚拟化容器技术,在这个容器中运行着和真机分离的你要部署的服务的全部运行环境,其核心是docker image和docker container。Docker image和虚拟机的vmdk有些类似,其中存放的是docker container运行需要的各种数据,比如继承了apache、php、python等等软件。而Docker container就是正在运行的一个容器,来提供各种各样的服务。它的概念有些类似Java虚拟机,Java程序就是用过java虚拟机来执行的。可以理解Docker container就是一台虚拟机。Docker 容器就是一个典型的黑盒子,将部署特定服务的各种细节封装起来,你只需要安装docker软件,即可运行相应的docker image,就像上述的nextcloud在树莓派的部署过程一样。
那么问题来了,我们为什么需要使用docker呢?作为一个初学者,我认为docker有以下几点无可比拟的优势。
一、 简单:
docker最大的特点就是简单!!!,同样的以下面部署nextcloud的服务的过程来说,假如我们不使用docker,那么我们部署的步骤应该为:
1.安装php以及各种各样的拓展库
2.安装apache/nginx等web服务器
3.从Nextcloud的官方网站上获取相应的文件,不排除传输过程中出现问题
4.安装mysql/mysqlite/oracle等等数据库软件
5.完成数据库的相关配置与权限分配
6.将nextcloud部署在网站的web目录
7.完成大量的繁复的web服务器相关设置
但是当我们使用了docker之后我们的核心操作其实就两行代码:
sudo docker pull nextcloud(从官方仓库下载docker image )
sudo docker run -d -p 23333:80 nextcloud
二、 安全
对于生产环境来说,使用虚拟化技术有一个天然的优点,就是将服务和真机分离开来,对于docker容器来说,它只在你的服务器上的一个位置存储它的数据,一切和客户的数据交换只发生在虚拟化容器之间,保证了真机的安全。
三、灵活
使用docker需要的只有一个docker image或者你自己也可以根据官方文档去创建自己的docker image。服务不想要了?删了就好。想开多个服务?轻松实现,一个docker image可以用于同时创建多个docker container,这就非常类似于多道程序设计里面进程的概念,他们使用同一段代码,但都具有自己独立的运行状态。
以上,是我在docker学习过程中的一些理解,您可能注意到,我使用了大量的类比的方法去理解它的概念,希望这篇文章能让您初步理解这种在运维中越来越热的技术——docker.
材料:
1.树莓派3B+
2.5V/2.5A的电源供电
3.32GB Class 10 TF卡(根据个人需要可选择容量更大的Class10TF卡 )
4.将官方的Raspbian Stretch with desktop and recommended software最新版本烧写入内存卡
Docker是一个虚拟化的容器应用,官方网站为(https://www.docker.com/)通过docker可以方便的部署各样的应用,免去一些配置的麻烦.以下步骤可参阅docker官方文档(https://docs.docker.com/install/)
首先通过ssh链接树莓派
sudo apt-get update安装必须的软件环境
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common添加docker官方的apt-key
curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -添加docker的apt仓库
echo "deb [arch=armhf] https://download.docker.com/linux/raspbian \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list安装docker-ce:
sudo apt-get install docker-ce安装完成docker之后,pull nextcloud 的官方镜像:
sudo docker pull nexcloud
sudo docker run -d -p 23333:80 nextcloud
这一步也可以通过参数手动指定数据存放的位置
sudo docker container ls
已经出现了正在运行中的docker container
到此nextcloud已经成功地部署在你的树莓派上啦,访问你的树莓派的23333端口(这个端口自己可以随意修改),就能看到Nextcloud的相关页面了.填入自己的用户名密码,使用默认的数据库就可以直接开始使用了
同时,nextcloud最强大的地方在于多终端同步,ios商店、googleplay(需要科学上网,或者后续我会上传apk文件),windows平台,linux平台都有相应的客户端。
效果大概是这样的:
|
|
|
|
|
|
|
|
编辑/etc/docker/daemon.json:
sudo vim /etc/docker/daemon.json
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
sudo service docker restart
2. 因为docker的虚拟化,所以可能会带来额外的开销,这里也不推荐用docker在树莓派上跑特别大型的应用,因为树莓派的性能还是比较弱的。
3. Nextcloud作为一个云盘的替代品非常优秀,ubuntu18.04及以后的版本都加入了对nextcloud的支持,你可以轻松的在任何操作系统上使用它,但是它依旧不是传统的Nas,没有办法实现像群晖一类Nas多种多样的丰富功能。
4. 本次的方案还缺少对关键数据的备份机制,毕竟树莓派使用的是民用级别的TF卡,其数据的安全性相比普通Nas稍有欠缺,同时因为是TF卡,写入性能上有些慢了,但是作为存放小文件照片之类的绝对够了。这点后续可以通过挂载2.5寸的笔记本硬盘或者固态硬盘解决。
以上是本次方案的一些不足和tips,本次通过一个小实例引入了Docker虚拟化容器的技术,展示了其在运维过程中的极其优秀的地方,希望对您的学习之路有所帮助。
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×