發表文章

目前顯示的是有「trouble shooting」標籤的文章

Port Knocking or ...…

 Port Knocking 就像是敲門暗號依序敲 2長1短3長 才開門的概念,之前有看到文章提到在 Linux 上實做用來強化安全性,沒想到路由器上面也可以做,更沒想到的是就連設個暗號也能從敲門變成撞門 工作環境:     某牌路由器          firewall rules for port knocking  基本上照著官網上的 port knocking 設定實作就行     要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG …… 要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG …… 要啟用 input DROP all 之前記得先開個後門,否則……所有設備都會連不進來就 GG ……     以下設定要放在 input DROP all 之前     目標設定  先設定要開啟的服務 dst. port 開啟時,允許的來源為一個自訂的清單(自行增加設定成類似 fin-ips 的群組清單) ,port knocking 嘛最基本的設定值就是 port ,當然你也可以進一步鎖定來源的介面和目的地…等等的參數 敲門設定(N次)  第1次:設定要敲門的 dst. port  ,同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(knock1)  第2次起:設定本次要敲門的 dst. port  ,然後指定 ip 來源是上次的清單(knock1)同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(knock2),依此類推N次…  最後一次:設定本次要敲門的 dst. port  ,然後指定 ip 來源是上次的清單(knock#)同樣的,可以進一步鎖定來源的介面和目的地....等等的參數,然後(action)將來源的 ip 加入群組清單(fin-ips),這樣就能和目標設定參數相呼應,形成閉環 以後,你指定防護的目標服務,必需...

為內網的 IMMICH 設定加密連線

 話說現在的網站都要有 https 沒有那個 s 好像犯天條似的,即使是在內網也要搞個 s 來玩玩,如果你已經當了勇者把伺服器放上公網,也歡迎你分享設定,肯定香啊~,做為一個膽小時間又少的使用者,還是來設一下 s 吧! 工作環境:     debian linux          docker               immich               nginx(做為反向代理用)                反向代理有很多選項,試了很多沒遇上好運,回頭用了最基本的 nginx,或許下次可以試試 caddy 吧 首先,開2個 docker 的網路並且設定 docker network create inner_network docker netowrk create reverse_proxy_network   在開始設定之前,記得把之前的 immich-app 停下來 docker compose down 設定一下 docker-compose.yml :進到你的 immich-app/docker-compose.yml 把每個 service 的 networks 改一下 如果 service 名稱是 immich 開頭的: networks:   - inner_network   - reverse_proxy_network 其他的 networks:   - inner_network networks 的總述 networks:   proxy:     driver: bridge   internal:     driver: bridge  引用 nginx:   nginx :     container_name : ng...

docker 容器之使用者 uid 和 gid

 docker 容器的 uid 和 gid 常會讓使用者在 host 端取用 volume 時綁手綁腳,雖然有人說這其中還有安全性的考量,但是使用 sudo 好像也沒有比較好,為了可以直接存取 volume 的檔案,居然花了好久好久,久到夫人說:怎麼最近又開始抱著電腦了?……………………………………其實是電腦沒有放人  工作環境:     Debian          mariadb 10.11 docker(compose) 狀況:裝好 mariadb 之後,volume 的權限是 999.999 ,很煩,得 sudo 才能在本機作業,雖然也沒什麼不行,但就不愛,然後…………搞死自已  2個解法,因為不是 product 環境,先試到這兒,期望有人講白話,把這題解了,免得折騰半天 法1:雖然不能自動化,但是直覺…  先裝起來  dcshell container_name (docker exec -it $1 /bin/bash -l)  usermod -u your_uid_in_host app_user;  groupmod -g your_gid_in_host app_group;  exit  chown -R user_user:user_group docker_volume  然後參照之前的 客製 docker image 的方式, 在 docker-compose.override.yml 設定引用新的 image  法2:真的用 Dockerfile 就可以自動化嗎!?先搞懂 Dockerfile 怎麼用吧  去 下載 所需的檔案,然後加一個超奇怪的 「USER "1000"」 到 Dockerfile 裏,再回到 docker-compose 裏引用 Dockerfile 並且指定 user ,這個解法能用匪夷所思來形容,反正能解,先頂著   總而言之  書到用時恨太多! 先醬!      收工! =================== sample 檔 =============...

使用 devilbox 建置 LAMP 環境

 docker 功能很強,可以(被)玩的東西很多,雖然要用 docker 自已建置一個 LAMP 環境也不算太難,單藍如果有人建好 LAMP 可以拿來用不就不難了(嗎?)… 工作環境:     Ubuntu Server 22          docker               devilbox  選用這個套件主要是它把很多伺服器 參數 的控制項都寫好了,整體上來說非常方便設定和使用,使用時透過 .env 來設定就行,(被)玩了好一會兒,覺得這個套件主要還是針對開發人員在本機上運行的,如果是放在伺服器遠端連過去的話,dashboard 會和 vhost 打架… 如果你的不打架,可以留言教一下,感激不盡   列出可能會動到的設定 DEBUG_ENTRYPOINT =4 TLD_SUFFIX =yourdomain.name NEW_UID =1000 NEW_GID =1000 TIMEZONE =Asia/Taipei DEVILBOX_UI_SSL_CN =localhost,*.localhost,devilbox,*.dvl.to DEVILBOX_UI_PROTECT =1 DEVILBOX_UI_PASSWORD =your_password DEVILBOX_UI_ENABLE =0 DEVILBOX_HTTPD_MGMT_USER =userName DEVILBOX_HTTPD_MGMT_PASS =your_password HTTPD_VHOST_SSL_TYPE =redir   #自動將 http 導轉到 https PHP_SERVER =uncomment_version_you_like HTTPD_SERVER =uncomment_version_you_like MYSQL_SERVER =uncomment_version_you_like HTTPD_DOCROOT_DIR =dirNameYouLike MYSQL_ROOT_PASSWORD =your_password PGSQL_ROOT...

virtualbox也拿出來用一用之 80 port forwarding 不見了

  virtualbox 在 windows 上使用還是蠻直覺的,一個 Linux VM(以下簡稱 VM) 的網頁伺服器,設定完成 NAT 的埠號轉接(port forwarding)就啟用了,想必將 VM 轉到 Linux Server(以下簡稱 Server) 上這個 VM 也(那)是(知)瞬(馬)間(上)完(撞)成(牆)吧(呢)! 工作環境:     Ubuntu Web Server VM 建置於 Windows 平台預計移植到 Linux Server平台  因為 Server 本身就會運行 ssh server 所以 VM 上的 ssh port 勢必得改掉,這樣遠端連入 ssh 時可以用 port 來辨別到底要連到 VM 上還是 Server 上,過了一關  為了讓 VM 的網頁伺服器運行起來和一般連接網頁時一樣,使用者直覺的打上網址(不用另加特殊埠號)就能連結,所以埠號轉送選了預設的 Server 80 port 對 VM 80 port ,接著怎麼連也連不上, netstat 一直不會出現 80 port 而 SSH 的 port 明晃晃的擺在眼前  防火牆開開關關, tcp wrapper, iptables 查了又查,就是沒辦法讓 80 port 現形,直到有人在網頁上說了,1024以下的埠號是保留存取權的,難怪…… 設定都對,別說找不到路,連路口都沒看到,問題就來了,問題發現,問題解釋,都有了,怎麼解決?  chat 被追問了許久,終於說出要 setcap ,指令打了半天,拆解又合併,就是不行,只好選用 VBOX_HARD_CAP_NET_BIND_SERVICE ,本能反應地在指令模式中 export VBOX_HARD_CAP_NET_BIND_SERVICE=1 source 接著和 GPT 確認之後,說是直接 vboxmanage startvm VMName --type headless 就行,結果也撞壁 ……  結果試出是 vboxmanage startvm VMName --type headless --putenv VBOX_HARD_CAP_NET_BIND_SERVICE=1  如此,不用先 export 或是 sour...

virtualbox 也拿出來用一用之 vdi 無法使用

 因為懶得折騰一大堆的程式碼,看來去挖之前的 VM 出來用應該是會比較快 ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… 嗎!? 工作環境:     windows          virtualbox 7          以前備份的 vdi 檔案  話說之前備份 vm 有點麻煩,還得下指令,只備 vdi 和 vbox 有時侯還是不行,本以為挖備份檔來重建工作環境會是比較快的,至少不用全部的程式重改一通,哪知道人算不如天算…,這大約是莫菲無誤  有些 VM 直接執行就可以,因為它沒離開主要的執行環境,而不能執行的那些備份檔案,要靠重建,或是更改檔案的 uuid  所謂的重建就是複製一個可用的 VM 然後把之前的 vdi 檔案匯入儲存媒體  這時侯可能會遇到之前的 vdi 檔案無法匯入的情形,出現的錯誤訊息很清楚,就是各種各樣的錯誤碼,仔細一看就是外星文,看不懂又解法又難搜,是一堆難啃的說明文件,這時侯就靠更改檔案的 uuid 了  處理好了之後,我回想了一下,可能不用複製 VM 來重建,最主要的要靠更改 uuid ...     收工! ---------------------------------- 一些可能會用到的指令 ----------------------------------  列出目前的 VM 有那些 VBoxManage list vms 複製 VM 到指定位址(不要包含 VM 名字的資料夾,不然 VM 的檔案會跑到指定資料夾下的 VM 名字的資料夾之下) VBoxManage clonevm sourcevm --mode all --name newvm --basefolder /path-to-vm/withoutVmName --register 重設硬碟的 UUID VBoxManage internalcommands sethduu...

Pandas profiling not able to import due to error cannot import name DataError from 'pandas.core.base'

 pandas profiling 是個好用的探索式資料分析工具,多好用,一行生成報表     pandas_profiling.ProfileReport(df)  But ....   工作環境:     windows 10 home         Anaconda:               python 3.11, 3.10               jupyter notebook     這個還是先裝吧               pandas                         openpyxl      和 pandas 一起裝               pandas-profiling     再裝這個 ( conda install -c conda-forge pandas-profiling ) 錯誤訊息:    P andas profiling not able to import due to error cannot import name DataError from 'pandas.core.base' 不引用 pandas-profiling 可以透過 pandas 取用資料的,所以問題出在引用 pandas-profiling ,由於之前遇過 python 版本太新造成問題,先裝一個之前版本(3.10)的環境,然後重裝一次所須的套件,重新執行 ju...

Linux Mint cinnamon 的一些坑

 久別 Linux Desktop 之後再次啟用,因為 ubuntu Desktop 用起來覺得會三不五時卡頓一下,後來轉到 Linux Mint Cinnamon 上,比較不會頓一下頓一下,而且剛裝好就會有精靈引導設定系統,最好是先把這些精靈導引事項先搞定,再接著客製使用環境。 工作環境:  Linux Mint Cinnamon  一、fcitx 別先急著裝:先在啟用時的導引精靈裏有個 system Manager 的輸入法(input method)裏面,記得先把 traditional Chinese 依照說明完成之後,再去各別裝 fcitx-table-boshiamy 之類的個人愛用軟體  否則會出現 fcitx-data conflict )(*&^()(*& 之類的難解狀況;如果已經遇到了就得 sudo apt autopurge fcitx* 移除 fcitx 之後,再回去 system Manager 把 traditional Chinese 的設定搞定才重裝無蝦米輸入法 二、gnome-terminal 突然失效:在完成 traditional Chinese 的設定之後,gnome-terminal 只會轉一轉之後就沒有開起來 :   重裝無效,其他 terminal 如 Xterm 可正常使用  vi /etc/locale.conf(預設是沒有這個檔案的):加入 LANG=en_US.UTF-8 就能修好  未試: LANG=en_US.UTF-8 bash gnome-terminal 一切回復正常 收工!

Mikrotik router 無法使用 winbox 透過 IP 連接

 不知道是不是設定的時侯連線狀態有佔住,還是用的是 wiregurad 的連接方式,當時是可以順利連上 router 的,這次想測 site-to-site wireguard 2個節點下的內部網路機器是否可以互相連通,發現要使用  winbox 進其中一個 router 時,無法透過 IP 登入,還好透過 MAC 仍然可以連進去,檢查 IP > services 發現 winbox 有打開,兩端內部網路機器可以互相 ping 到,多半又是防火牆擋住了  工作環境:     2 mikrotik router with site-to-site wireguard VPN       進入 router 後趕快把 log freeze ,並且找關鍵字 8291(預設的 winbox port),發現被 DROP ALL 的 firewall filter 擋下了,所以要設 log 才好排查設定啊~~  有 log 幫忙就能很容易知道要開什麼洞給自已鑽,因為 log 會詳細記錄封包的來龍去脈,照著把小門打開就行:記得 dst-address ,還有 src-address 要視你的需求和設定,改成你的目的地和來源的 IP 位置或是範圍 /ip firewall filter add action=accept chain=input comment="allow LAN/bridge to Winbox" \     connection-state=new dst-address=192.168.1.254 dst-port=8291 in-interface=\     bridge1 log=yes log-prefix="allow LAN/bridge to Winbox" protocol=tcp \     src-address=192.168.1.0/24   設好了以後,馬上用 winbox 透過 IP 連進 router ,已經可以登入了      收工!

Mikrotik CCR 無法更新

 新版(7.8) RouterOS 釋出,想要看看有沒有 ROSE storage 可以用,先升級看看,然後就GG了  工作環境:     Mikrotik CCR          firewall DROP all input after some open services  錯誤訊息: can't resolve DNS ,想必是沒開 DNS 進來,看了一下 log 知道從哪個介面來,從哪個 src port 來     /ip firewall filter add action=accept chain=input comment="allow DNS response" in-interface=\     pppoe-out1 log=yes log-prefix="allow DNS response" protocol=udp src-port=\     53  錯誤訊息變了: connection timed out,google之後找到論壇有人討論     /ip firewall filter add action=accept chain=input comment="allow Update allow established connections" in-interface=\add action=accept chain=input comment="Allow Update allow established connections" connection-state=\     established add action=accept chain=input comment="Allow Update2 allow related connections" connection-state=\     related  可以更新了 收工!

VSCode 使用者模板一直把內容打在檔案名稱上

 在使用 Visual Studio Code(以下稱 VSC) 的時侯,常常會設定常用的模板以增加開發速度,只要填空關鍵字就好,只是怪在,想要的內容跑到檔案名稱上去了,就是不呈現在檔案的內容上,怎麼改,改 settings.json 也不是,改使用者模板(snippet)也不是  工作環境:     Windows 10     VSC         snippet  突然想到多給一行空白好了,結果就成了… coding *(*^%^*()^ 那一行不會再出現在檔案名稱上了     "Python File" : {         "prefix" : "pf" ,         "body" : [         "" ,         "# -*- coding: utf-8 -*-" ,         "" ,         "def main():" ,         "    pass" ,         "" ,         "" ,         "if __name__ == '__main__':" ,         "    main()"         ],         "description" : "Python file with default settings"     }       收工!

Ubuntu 設置 Wireguard

  開始想用 wireguard 的時侯,套件一開始就裝好了,一直找不到設定檔,而且試著開始用的時侯,發現怎麼顯示出來的介面和設定的不一樣,於是又開始了一陣胡搞瞎搞…  工作環境:      Ubuntu 22 server  LTS      wireguard 1  設定的方式大同小異,可以參考 這裏 、 這裏、 或是 這裏 ,設定檔的資料夾權限可能要注意一下:     mkdir -m 0700 /etc/wireguard/      cd /etc/wireguard/      umask 077      wg genkey | tee privatekey | wg pubkey > publicke y  看別人設定覺得好像不難,居然也能撞牆…  就在完成設定檔之後, start wireguard 發現 interface 的資訊和設定的不一樣,而且找不到地方可以改原始的設定,是的,系統裏找關鍵字 conf 和 wg 就只會找到自已剛才開的設定檔,其他的檔案看起來就是長得和自已剛才開的設定檔不像,那時忘了先重開機一下,可能就沒事了,千金難買早知道啊…畢竟是很少需要重開機的系統  為了讓 wireguard 可以「正確」的啟用,開始針對訊息和設定的落差,透過刪改既有的檔案的方式來「修正」「落差」,於是乎這個檔重建也不是,殺也不是,unmask 也不行, wireguard 就是無法啟用  Failed to enable unit: Unit file /lib/systemd/system/wg-quick@.service is masked  原本設定檔裏想要透過 `cat privatekey` 來引用私鑰也是不行地…乖乖地把私鑰貼上設定檔了  如果可以很快地抓到問題所在,排除狀況,當然對症下藥,用修的;然而很多時侯,打掉重練看起來吃力,卻是最佳解, 重設設定吧,記得也要重開機   sudo dpkg-reconfigure wireguard ...

Mikrotik winbox refuse connection

  在整個 wireguard 的設定一陣忙祿之後,嘗試用 IPSec VPN 再次連回分享器,GG 了,好在這次只有一邊不能連,進去看 Log...  Log 說,用的是 IP Sec 連線,用的是 192.168.9.0 的網段,要連到 Winbox 被拒了  工作環境:   Mikrotik   Windows VPN 連線    winbox  相比2個端點的 firewall 發現有一點點不同,簡單,調成一樣就行,然後還是 GG…  後來看到2個端點的 service 設定不太一樣,原來是 IPSec 的網段沒有在允許的範圍內,於是把小門打開(winbox service 的 Address: 加入 IPSec 的網段 192.168.9.0/24),winbox 應聲打開 收工!

Mikrotik DNS Server 提供內部使用的名稱伺服器

 網域名稱對於使用者是蠻重要的服務,它雖然不貴一年400台幣左右,但是方便性無價,使用者絕對不會想去知道它的 IP ,他只想要他想找那台機器的時侯,提供你一個名字,然後你能幫他找到,那台機器在哪裏,所以就需要 DNS Server(以下稱DNS) ,也就是名稱伺服器,用來提供名稱和 IP 的對應,方便人機溝通  工作環境:   Mikrotik router    DNS Server for internal clients   Windows clients  Mikrotik 提供靜態名稱伺服器供使用者使用,在 IP > DNS > DNS settings: > Servers: 把內網的 Gateway(以下稱gw)的 IP 打上(例如: 192.168.0.1) > Allow Remote Request 勾起來 > Apply > OK ,這樣 DNS 就設好了  如果你要設定名稱對應,例如:192.168.0.2 名稱要叫使 notebook.router.lan 的話,在 IP > DNS > DNS settings: > Static > + > name: notebook.router.lan > Type: A > TTL: 1d > Address: 192.168.0.2 > Apply > OK ,有很多個就加很多次  如果你提供了 DHCP Server(以下簡稱 DHCP)讓使用者可以自動取得 IP 的話,記得到 IP > DHCP Server > Networks > 把對應的 Servers 填上去以便使用者自動取得 IP 時也使用你指定的 DNS  記得,那個 Allow Remote Request 勾起來,Allow Remote Request 勾起來,Allow Remote Request 勾起來,不然查找 DNS 的時侯,會一直 request timed out      收工!

Mikrotik firewall 開洞給 wireguard 鑽

 為了把不必要的門關起來,把 input drop all 的政策開起來之後,原本可以連線的 Wireguard 連不上了…  還好現在在設備旁  工作環境:   Mikrotik CCR site-to-site wireguard hapAC, CCR ip firewall filter +default drop input all   Wireguard windows peer   CCR 的 input filter 相對於 hapAC 在 wireguard 的路由管理應用在 firewall 好像是比較嚴格,其他設定一樣的狀況下,在開啟 input drop all 之後, wireguard 連接 hapAC 還是可以存取資源,但是連接 CCR 就馬上被關在門外,想必是得開小門… 操作:  wireguard 連遠端 site (hapAC)無法連回 CCR ,wireguard 連近端 site(CCR)無法通  在 CCR 實體線路把對方的內網 gateway 打開: /ip firewall filter add action=accept chain=input src-address=192.168.2.1  wireguard 連遠端 site (hapAC)可以連回 CCR ,wireguard 連近端 site(CCR)無法通  再把 wireguard 的網段打開: /ip firewall filter add action=accept chain=input src-address=10.10.10.0/30  wireguard 連近端也可以通了   收工!

wireguard 連到 site-to-site VPN 時同時存取兩個 site 下的資源

  連到 VPN Server 就是為了要存取內部網段的資源,如果2個 VPN server 用 site-to-site 的方式連好了,想說就能同時存取兩邊的資源,但是…  工作環境:   2 Mikrotik router with site-to-site wireguard    peer(road-warroir) link one of 2 peers above 不管連接任何一個剛設好的點(peer) 都只能看到一邊的資源(例如:nas),最簡單的解法可以參考之前同時連接多點的方式,就收工了! 只是我們都期待一個更美好的世界…,因為都是自家的設備、資源,所以想要不管連那個點都能看到所有的設備,這種方式有好有壞,好處就是一鍋端,壞處就是有別人進來也是一鍋端,安全的事留給大神,居家自用只管方便就好 還記得 設定 wireguard Server 的時侯有兩種方式可以讓使用者獲得存取權限嗎?要用 firewall的方式:  /ip firewall filter add action=accept chain=input comment="allow WireGuard" dst-port=12345 \ protocol=udp 之後再把 wireguard 的連進來的網段(192.168.0.0/24)加到 firewall NAT 到自已的 gateway 的網址: /ip firewall nat add action=src-nat chain=srcnat src-address=192.168.0.0/24 to-addresses=192.168.1.1    如此一來,不管是用 Wireguard 連接哪個 site-to-site 的點,或是兩點都連,都能存取2個點的資源    收工!

Mikrotik 快速設定 VPN server 使用 QuickSet

圖片
要連線回家拿東西就需要 VPN Server ,雖然 Mikrotik 提供很多種方式可以完成這個工作,但是總是繞來繞去,點來點去,常常連不上,卡來卡去,於是繼續點來點去、卡來卡去、無限循環,有負 QuickSet 的美意,又讓人有小孩開大車的感覺,趁著新年收假前,把這個爛尾已久的設定搞定。  工作環境:   Mikrotik Hap ac Router  最好是把路由器重設,把環境回復到最單純的程度,Quick Set 用起來就和市面上的分享器一樣好用,把設定值填一填馬上就可以上網,因為要啟用 VPN Server 所以記得把右下角的 VPN access 勾起來,然後設定好 Password,基本上就可以連回路由器了,真的是 Quick Set(如下圖)。 在 Windows 下連線 VPN 非常簡單,只要把你的 ip 或是右下方的 VPN address 填好,就可以連上了, 詳此 , ping 得到內網的 gateway IP、 DNS IP ,也連得到外界的網頁,但是…  連回自家的路由器之後會發現,連不到自家路由器裏的設備,等於得到一個跳板而已,沒有達成原本連回家拿東西的目的…  檢查 /interface/bridge 的設定, proxy-arp 已經打開,後來發現有人提到,把 /PPP/profile/default-encrypt 的 interface 指到 LAN 裏面就行了,如此一來 VPN 連入的設備會被視為 LAN 的一部份,再次開啟 webfig ,可以連到。    收工!

在移除 python2 之後 docker-compose 除錯

 其實要是不手賤可以不用這麼麻煩,因為大部份的時間用的是 python3 但是,裝的時侯沒注意,裝了 python2 和 python3 而預設的 pip 用的是 python2 ,在移除了 python2 之後,原本作動得好好的 docker container 不動了。  症狀: Traceback (most recent call last): File "urllib3/connectionpool.py", line 677, in urlopen File "urllib3/connectionpool.py", line 392, in _make_request File "http/client.py", line 1252, in request File "http/client.py", line 1298, in _send_request File "http/client.py", line 1247, in endheaders File "http/client.py", line 1026, in _send_output File "http/client.py", line 966, in send File "docker/transport/unixconn.py", line 43, in connect FileNotFoundError: [Errno 2] No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "requests/adapters.py", line 449, in send File "urllib3/connectionpool.py", line 727, in urlopen File "urllib3/util/retry.py", ...

開機時確保 docker 網路建立 docker 網路不要冠上 service 的名稱

需求:  ubuntu 18 之後預設已經沒有 /etc/rc.local 這個檔案,所以,要自已加1個,然後就能做開機之後要做的事  docker 的網路已經事先建(create)好了,如果直接在 docker-compose.yml 的設定檔裏面直接引用的話,不但會和建好的網路相衝,必須移掉相衝的網路重新啟用容器,而啟用設定檔內的網路時, service 的名稱就會冠在 network NAME 前面,不是很直覺  如果 docker 網路沒有建好,想要開機時確保 網路建立 起來 工作環境:   ubuntu server 18 lts     docker     /etc/rc.local 動手: /etc/rc.local 這個檔預設是沒有的,開起來就行,記得加上執行的權限,等一下重開機才會執行 printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local sudo chmod +x /etc/rc.local   vim /etc/rc.local 在 exit 0 之前加上你要做的事,確保建立 docker 網路 docker network create your.network.name --driver=bridge --subnet=192.168.0.0/24 || true   編輯容器的設定檔 /somewhere/docker-compose.yml services :   app :     image : someone/app:latest     restart : always     volumes :       - /path/you/want:/data     ports :       - "1.2.3.4:1:1"       - "2:2/udp"     networks : # 把既有的網路指定給 service ...

docker 初探

 做為容器管理,docker, k8s ....很多工具,已經不是新聞,把伺服器搬進容器已經無法再拖…  工作環境:     Ubuntu 18 LTS         docker  裝好了 docker 就來裝個 name server 吧, docker pull ******** 結果:permission denied *********   太急了,忘了用 sudo 或是把 user 加到 docker 群了  sudo docker pull ***********  或是   sudo usermod -aG docker USERNAME 收工!