看板 Linux 關於我們 聯絡資訊
※ 引述《ShenJing (ShenJing)》之銘言: : 大家好,不好意思又來發問, : 想請問若想在 docker container 中架設 NIS Server, : 該如何讓其他台主機連上(ypbind)呢? : 我先描述目前環境、嘗試過的方法、卡住的地方: : ---目前設備--- : 總共2台實體主機,其中1台為 Docker host(開個container架 NIS Server), : 各有 public IP : [Docker Host] : IP:140.5.5.5 : Hostname:host : CentOS 7.6.1810 : [NIS Server] : 創建 container 額外下的參數:--privileged,以及與實體機 port 的映射 : -p 49311:111 -p 49311:111/udp : -p 49211:1011 -p 49211:1011/udp : -p 49212:1012 -p 49212:1012/udp : (111:rpcbind : 1011:ypserv : 1012:yppasswd) : IP:172.17.0.6 : Hostname:nis-master : CentOS 6.10 : [NIS Client] : IP:140.4.4.4 : Hostname:client : CentOS 7.4.1708 : 過程與教學是看鳥哥, : ypserv.conf 直接設定為 * : * : * : none, : 此外為避免問題出在指令或參數,後來有在 host 那台以同樣過程 : 直接架設 NIS Server,原本 Client 使用 yptest 測試,但卡在 ypbind, : 後來暫時關掉 firewalld 後,可成功連線。 : (還不太會 iptables,所以才暫時用關掉防火牆的下下策做測試 ) : 後來換回該 host 的 container,跑了同樣流程卻不行, : (兩者rpcinfo的輸出結果均正確一致) : 是卡在 ypbind 的階段:https://i.imgur.com/KtGyQAo.png
: ---問題點--- : 比較有問題的是 /etc/hosts 部分: : 140.5.5.5對應host : 140.4.4.4對應client : 因為 client 端在填 NIS domain 的 Server IP時,填的是140.5.5.5, : 但請問這樣 Client 在連線 (ypbind) 時,會不會一直想連到Docker host,而不是有 : 設定對應的 port 的 container,最後因為host上沒有架設 NIS,導致一直無法連線呢? : 目前感覺最有可能的問題應該是出在這, : 不知道該怎麼該怎麼讓 client 去連指定 port… : 後來我有直接設定111:111、1011:1011、1012:1012, : 可是 111 port 已經被 systemd 占用了,所以此方法也失敗… : 請問有沒有大大有處理過類似問題的呢? : 最後感謝各位的閱讀 你的問題點就是 Container Port 與 Host Port 不同 造成 Client 無法連線到 Container Port 問題很好解決,就是直接將 NIS 換成 Container IP 就好 可是...你應該思考的是,用錯誤的方式去應付問題是不好的 舉個例子,因為發現 FTP 不能使用就直接把目錄權限改成 777 這樣可以快速應付問題交差,但 777 這種權限應該出現嗎? 應付問題還是解決問題比較重要,就是一個管理員的品質 最後想跟你提所謂的盲點是甚麼 一、 你可以想想看,通常會用到 NIS,代表環境中機器數量較多 結果你為了 container 化,又去修改全部 VM 的 Client 端 何況 NIS 進行 container 的話,勢必需要將帳密 mapping 到 Host 從這裡去思考,NIS container 之後有帶來甚麼好處嗎? 並沒有,除了增加麻煩之外還增加風險值... 二、 你 port 111 的錯誤來自於... 系統預設已經使用,所以沒辦法 mapping 個人認為,由於 NIS 並不是需要常常異動版本的服務 正式環境而言,也都是獨立運作,不太可能讓 NIS 另外當 Web Server... 這是安全性的考量,畢竟服務越多危險性就越高,更新也越容易出錯 建議在 VM 與 Container,選擇適合的去運用才是好的 而不是一昧地追求 Container,這樣實在有點本末倒置 至於你的老師...這點建議去說服他,沒有其他辦法... 學習東西的方式,建議先從理解原理與為何需要開始 因為理解技術原理是非常重要的... 因為你理解 NIS 的話,應該不會做 container 因為你理解 rpcbind 的話,應該知道 111 port 為什麼會不能 mapping 另外就是看 Log 的習慣,這點非常重要 Log 可以提供非常多的資訊給您,也是我最喜歡 Linux 的地方 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.170.236 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1549357445.A.D57.html
da21510: 推 02/05 19:43
da21510: 一堆沒意義的行為只會增加管理難度 02/05 19:43
chang505: 推這篇 02/06 03:10
chang505: 原原PO那篇錯亂到懶得回答他 你人超NICE 願意解釋基礎 02/06 03:11
PhenoK: 非常感謝您,還讓您仔細解釋我的盲點,值得我好好思考,感 02/06 13:46
PhenoK: 謝各位大大 02/06 13:46
PhenoK: (原原po留) 02/06 13:47
nbkl: 很清楚的講解 02/24 13:13
awang44: 讚 03/07 02:36
ShenJing: 想在補個疑問,在docker預設使用的網路模式下,其他host 06/27 09:41
ShenJing: 無法連到該台host下的容器IP吧,172.XX/16不是private嗎 06/27 09:41
ShenJing: *再 XD 06/27 09:41