OMV上部署Docker,然后再是Docker上玩转NextCloud。为毛不单独部署NextCloud?因为OMV的GUI好用呀,哦,忘记说我的Linux就是个菜了。

Docker

容器的作用主要就是微服务,快速开发,快速部署,而不需要管理硬件底层的内容。容器比VMWare这些虚拟化产品更轻量化。

常用容器命令

  • docker ps
    注: 检查运行容器状态
  • docker network ls
  • docker network inspect (网络名字)
    注: To check the container assigned IP on the specified network

  • docker network connect

  • docker ps

  • docker containner list

  • docker container stop (name> / container id)

  • docker restart

  • docker container logs –tail 100 (name)

  • docker container rm -f $
    注: 清空所有container

  • docker version

  • docker update

  • docker exec -it (container name) bash
    注: Enter a running container shell

Docker 网络

Docker有五种类型网络

  • brdige:类似NAT 内网映射
  • host:用host的ip,映射在不同的端口上
  • overlay
  • macvlan:虚拟mac给container
  • none

我们最关心的是macvlan,因为大部分网络都用layer 2进行域隔离。所以我们需要用到docker host的sub-interface作为macvlan的载体。

  • 通过OMV网络界面创建vlan sub-interface
  • 交换对应端口要改成trunk port
  • 通过OMV docker界面创建macvlan 网络,指定parent interface 为vlan sub-interface

命令行方式

  • ip addr | grep mtu
  • docker network create -d macvlan
    –subnet=<10.0.10.0/24> –gateway=<10.0.10.1>
    -o parent=(eth0.10)
    (macvlan10)
    注: 你可以直接创建mvlan,sub-interface会自动创建

  • docker network ls

  • docker network connect
    –ip=<10.0.20.3>
    (macvlan20)
    (container1)

  • docker exec -ti container1 ip addr | grep ‘mtu|inet’
    注: 查看container IP

Docker 用户和用户文件映射

docker是轻型虚拟机,所以要进行文件夹映射作为docker container的虚拟硬盘使用。使用OMV的文件,就设计用户名/用户组。OMV的新建用户,默认用户组都是users;需要命令行把用户从users组移除。

  • usermod -a -G group1 user1
    注: 把user1加入到group1组中

  • usermod -g group1 user1
    注: 把user1加入到group1作为主用户组

  • gpasswd -d user1 group1
    注: 把user1从group1中移除

  • id user1
    注: 查看user1的id和组id,用于container 用户映射

NextCloud Container

NextCloud就是本地版的dropbox,构建私有云必备。

docker create
–name=nextcloud
–net=(macvlan)
–ip=(ip address)
-e PUID=1000
-e PGID=100
-e TZ=Asia/Singapore
-p 443:443
-v /sharedfolders/nextcloud/config:/config
-v /sharedfolders/nextcloud/data:/data
–restart unless-stopped
linuxserver/nextcloud

网络选择macvlan,默认端口443
注: 你要提前在OMV GUI新建共享文件夹,比如/sharedfolders/nextcloud/config和/sharedfolders/nextcloud/data,这样作为数据库的配置文件存储位置

NextCloud的配置文件在:/sharedfolders/nextcloud/config/www/nextcloud/config/config.php
注: 你可以修改数据库地址,数据库实例用户名和密码

MariDB Container

创建名为nextclouddb的MariDB Container

docker create
–name=nextclouddb
-e PUID=1000
-e PGID=100
-e MYSQL_ROOT_PASSWORD=(mysql_root_password)
-e TZ=Asia/Singapore
-p 3306:3306
-v /sharedfolders/nextcloud/db:/config
–restart always
linuxserver/mariadb

网络选择Macvlan,默认端口3306
注: 你要提前在OMV GUI新建共享文件夹,比如/sharedfolders/nextcloud,这样作为数据库的配置文件存储位置

绑定nextcloud服务器地址

  • cd /shareedfolder/AppData/Nextclouddb
  • nano custom.cnf
    bind-address= (NextCloud IP)
    注: 绑定NextCloud Server IP,意思是只有NextCloud服务器才可以访问数据库

新建数据库用户与实例

SSH 登录

  • cd
  • clear
  • docker restart nextclouddb
  • docker exec -it nextclouddb bash
    注: 进入container console界面

  • mysql -uroot -p
    注: 输入之前创建Container时候MySQL root 密码

登录之后进行如下数据库实例创建

SELECT User, Host FROM mysql.user WHERE Host <> ‘localhost’;
注: 检查当前用户

CREATE USER ‘db_user’ IDENTIFIED BY ‘db_user_password’;
注: 新建数据库用户

CREATE DATABASE IF NOT EXISTS nextclouddb;
注: 新建数据库实例

GRANT ALL PRIVILEGES ON nextclouddb.* TO ‘db_user’ IDENTIFIED BY ‘db_user_password’;
注: 文件型数据库,直接授权就可以

  • quit
  • exit

Tips

  1. Nextcloud Docker 点我穿越门
  2. MariDB Docker 点我穿越门
  3. Transmission Docker 点我穿越门
  4. Jackett Docker 点我穿越门
  5. Nextcloud 安装视频 点我穿越门
  6. Docker Cheatsheet 点我穿越门
  7. Docker 网络 点我穿越门
  8. Docker macvlan 配置 点我穿越门

AD