Truenas scale版本默認屏蔽容器網路, 容器無法上網, 通過簡單手段解除

字號+ 編輯: 种花家 修訂: 种花家 來源: 原创 2024-09-03 我要說兩句(1)

國内一般提到NAS, 比較流行的解決方案只有群暉之類的軟硬件成品包裝商啦。本篇介紹一下Turenas Scale在docker下容器被限制訪問外網的解決方案,比較冷門, 折騰truenas和freenas的小夥伴可以看一下。

有的人說了, 直接上個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系統, 以上步驟還需要重新做一遍。

完結, 撒花~

閲完此文,您的感想如何?
  • 有用

    6

  • 沒用

    0

  • 開心

    1

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 防止退出linux終耑退出之後導致的nohup進程強制退出

  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • linux終耑下借助awk命令查詢篩出網站access.log日志裡的統計信息

我要說說
網上賓友點評
1 樓 IP 61.149.***.150 的嘉賓 说道 : 很久前
你简直就是个人才