iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
IT管理

用UNRAID打造AIO全生態系列 第 22

Docker:系統權限與Port Mapping

  • 分享至 

  • xImage
  •  

主題前說明
由於前一屆鐵人賽已有完整講解UNRAID Docker基礎操作設定
傳送門如下
https://ithelp.ithome.com.tw/articles/10276601
故此篇並不會討論Docker怎麼新增/刪除Container等方法
而是要談到我這一年來玩UNRAID Docker遇到的"坑"
希望大家以後都不會踩到坑!/images/emoticon/emoticon47.gif


1.系統權限

每個Container裡,都會有需要設定Path的時候
如果沒有設定Path
那當Container被刪除時,資料也會隨之消失
所以就需要採用類似"mount"資料夾的方式來存取主機上的資源 (可將Container想成是客機)

但卻不是所有Container都能存取主機上的所有資源
因為這牽扯到使用者權限的問題
舉例來說:

Container預設以nobody的身分執行
那path假如設定成以root為擁有者的資料夾
即使權限為777,也會無法存取
(下圖就演示了此狀況)
https://ithelp.ithome.com.tw/upload/images/20221006/20117399M4D7waIeqo.jpg

所以就要為Container配置正確權限,以便存取特定path
具體方法為

--user=PID:GID

例如欲以root身分執行,就可以寫成這樣

--user=0:0

小提示
如果想改成別的使用者也可以查看以下指令,在自行修改不同的PID,GID即可

more /etc/passwd

2.Port Mapping

第二個Docker系統層級的問題就是Port Mapping
因為Docker沒有虛擬網卡/NIC的機制
所以熟練Docker的讀者可能會發現一個問題
那就是以Bridge以外的網路配置作做Port Mapping
並沒有任何用處
舉例來說

有個Container內部port預設8000
如果以br0做為網橋(非Bridge)
現在想Mapping成9000是行不通的

所以就只能盡可能避開使用中的port,把各個port做規劃:

2.1 Container分配表

在新增Container的列表裡滑到最下方,展開下圖的列表即可查看
https://ithelp.ithome.com.tw/upload/images/20221006/20117399WgSIAKkVBX.jpg

2.2 查看使用中的port

這可以查看並避開主機上使用中的port
避免系統間產生衝突

netstat -ntlp

小提示
如果要修改Container內部預設port也是可以
只不過要進Container路徑修改相關檔案,再重新啟動整個Docker System才能生效
而這重新啟動的時間會導致雲端相關的Container停止運作
所以還是盡量能分配port就好


上一篇
Script:BTRFS Scrub
下一篇
Docker Compose介紹與環境設定
系列文
用UNRAID打造AIO全生態31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言