docker
避免環境衝突和程式的相依性,所以需要透過 docker 來產生專屬的 container…
以下安裝步驟環境為透過 VirtualBox 上已經安裝好的 Ubuntu 18.04 來執行 Docker
參考資料
!! 完成後登出再重新登入
參考資料
- Day5: 實作撰寫第一個 Dockerfile
- 怎麼把 volume 寫入 Dockerfile 中 :
Day18:使用 Docker Volume 的功能 (二)- command reference
docker docs - docker build- Dockerdile sample
docker docs - Best practices for writing Dockerfiles
Dockerfile sample - CentOS
在 Dockerfile 中依序列下環境需要的更新和安裝 (image 剛建立時, 就像剛裝好的 OS 一樣),在打包 image 時會自動將這些步驟加入打包過程中
建立 docker image (如遇到權限問題請再前面加上 sudo
)
.
.
.
參考資料
- command reference
docker docs - docker run reference
可以看到 user name 已經從原本的使用者 prince 變成 root, 表示我們已經切換到 container 中了
如何檢查 container 掛載的 volume 在 host OS 上的實際位置
由於我們在 Dockerfile 中有寫到 volume 的設定, 所以在開啟 image 到 container 中時已經從 host OS 中自動掛載一個目錄到 container 下, 要透過下列步驟來取得實際路徑
取得 container ID
透過 container ID 來取得掛載到 host OS 中的實際位置
實際存取該位置時需要切換到 root 權限
在 container 中測試編譯
如果 container 停止了,可以透過下面命令重新執行,如果執行 run 重新啟動,其實是重新開啟一個 container 和重新掛載一個新 volume 位置
在 container 中將想要的修改完成
退出 container
取得想要修改的 container 資訊
透過指令來提交想要的 image(如果名稱相同將會覆蓋原來的 image)
檢查 image 清單,發現 image 已經變更成功
雖然已經完成 image 更新,但要記得再把需要更動的部分同步到Dockerfile 中,這樣需要透過 Dockerfile 打包新的 image 時才不會出現沒同步到的問題
參考資料:
[Docker] 比較 save, export 對於映象檔操作差異
Lsmod and modprobe not found
複製打包好的 image 到 client 上
透過下列命令把打包好的 image 匯入 client docker 上
匯入的 image 如果需要執行像 modprobe 的命令,請在啟動 container 時加上 --privileged
命令
ex.
當 export image 的 OS 和 import image 的 OS 差異過大時,建議先將落後的版本升級上來
查詢發行版本
$ cat /etc/*release
, 查詢核心版本$ uname -r
參考資料:
1. 用30天來介紹和使用 Docker