有的人说了, 直接上个debian/centos的镜像粗野安装就完事了, docker简单搞起来也不费什么时间, 折腾这个何必呢? 小编当初的意图就是想搞个带raid-z的小型磁盘阵列机, 一来truenas有许多好玩的工具, 另一方面写好的维护脚本很给力了。加上docker如果和普通测试机上的无限制play, 简直可以说算是起飞。至于如何解除官方镜像自带的docker容器限制。容在下一步一步的说。这可是在阁下的宝贝NAS里做配置, 请千万不要漏掉任何一步哦。玩崩了可不要怪小编哦~
注意:解禁docker外网访问权限意味着安全方面差一截, 不清楚后果的话,不要在线上生产服务器里这样搞。
开启ssh服务
首先通过镜像安装完了truenas scale版本后, 肯定是要登录web图形界面的root用户, 再在System settings->services打开ssh服务。开启后别忘了再把auto start那个勾也勾上, 不然下次启动没得玩了。
配置ssh服务
为了安全, 把ssh登录端口改成自定义端口, 改大一些, 免得傻瓜工具的黑客很快扫到。再选择允许root登录, 英文叫 login as root with password
登录truenas的ssh终端
登录环节就很简单了, 只要你知道怎么用终端命令登入服务器, 那这个问题就不大。
ssh root@你NAS服务器的ip -p 端口号
举个例子, 比如NAS服务器被放在内网的192.168.1.8, 端口号6666, 那么命令就变成这个样子:
ssh root@192.168.1.8 -p 6666
接下来输入root密码, 问你是否保存指纹, 输入yes回车, 登入成功。
详细修改步骤讲解
用vi工具编辑/etc/docker/daemon.json
首先如果你不熟悉vi, 先要脑补一下vi工具的使用。vi和vim是两种操作玩法, 比如x是删除光标所在的字符, i是进入插入模式, ESC是退出插入模式, wq是保存后退出, q是直接退出, q!是不保存退出。
小编假设你已经熟练地操作vi了, 那么你使用这个命令:
vi /etc/docker/daemon.json
开始编辑这个文件。如果你发现这个文件压根就没有,请先创建/导入一个硬盘阵列池。总得有一个基本磁盘阵列,否则TrueNAS脚本不会自动给你创建的。
把iptables, bridge这两个字段, 统统删掉。假如你把盘阵路径设置为/mnt/pool1, 那么最终文件变成了这个样子:
{"data-root": "/mnt/pool1/ix-applications/docker", "exec-opts": ["native.cgroupdriver=cgroupfs"]}
之后按esc敲wq保存。保存之后,为了保证truenas重启或者碰了truenas web面板某个功能之后不会以默认的配置覆盖掉这个文件, 你需要运行下面的命令来复制一个副本。
cp /etc/docker/daemon.json /etc/docker/daemon.open.json
编辑docker服务配置文件
vi /usr/lib/systemd/system/docker.service
找到[Service]配置段
ExecStart=/usr/bin/dockerd
在那后面插入一行
--config-file=/etc/docker/daemon.open.json
也就是注入你刚才写完的新配置。
那么不出意外的话, 这一行应该变成了
ExecStart=/usr/bin/dockerd --config-file=/etc/docker/daemon.open.json -H fd://
至少小编的NAS配置文件就是这个样子的。接下来别着急,还没完事……
重启docker服务
systemctl daemon-reload systemctl restart docker
然后你再进docker测一下, 例如curl执行一下看看出的啥? 应该是简单粗暴地解决了这个问题。
修改方法总结
基本修改方法知道了,为了快一点完成上文所述的操作,可以用以下步骤简化完成:
tee /etc/docker/daemon.open.json <<-'EOF' {"data-root": "/mnt/你的盘阵名称/ix-applications/docker", "exec-opts": ["native.cgroupdriver=cgroupfs"]} EOF
vi /usr/lib/systemd/system/docker.service
将13行附近的
ExecStart=/usr/bin/dockerd -H fd://
改为
ExecStart=/usr/bin/dockerd --config-file=/etc/docker/daemon.open.json -H fd://
执行
systemctl daemon-reload && systemctl restart docker
注意事项
如果你不小心更新了基本truenas scale系统, 以上步骤还需要重新做一遍。
完结, 撒花~