docker學習系列2儲存對容器的修改

飛凡的陀螺發表於2018-07-28

接上篇

docker容器雖然執行起來了。

但遇到了新的問題:

  1. 容器內安裝的伺服器是nginx,nginx對 PHPINFO 支援不好,對於ThiankPHP專案,簡單的說在apache伺服器下執行 http://localhost:8088/home/Index/index 能正常返回結果,而nginx返回404,必須要寫成 http://localhost:8088/index.php?m=home&c=Index&a=demo
    所以我需要修改nginx配置檔案,使其支援。
  2. 由於容器本身是無狀態的我修改完配置檔案,關閉docker,下次在啟動後還是原樣,我需要儲存修改。

下面是解決方法:

  1. 容器為了精簡沒有按照VIM,編輯檔案不方便,要先安裝 apt-get update; apt-get install vim
    如果執行 apt-get update 超時了,得翻牆。
  2. vi /etc/nginx/sites-enabled/default 編輯並修改配置檔案,記得最好先備份
  3. 修改完新開個視窗
    先執行 docker ps 檢視正在執行的容器,複製 container id。
    然後 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 如 docker commit cb439fb2c714 finley/phpenv:tp3.2
    commit 會基於對container的修改建立一個新的映象
    具體用法請參見官方文件:commit

注意:
經查,不推薦更改執行中的容器配置,容器本身是無狀態的,當然也可以通過進入容器內部的方式進行更改: docker exec -it 這樣的更改是無法持久化儲存的,當容器重啟後,更改就丟失了,正確的做法是將需要持久化儲存的資料放在掛載的儲存卷中,當配置需要改變時直接刪除重建。

回顧:

# 從別人那拉個映象
docker pull eriksencosta/php-dev
# 基於上面的映象加入了自己的修改並提交為自己的映象,還打了tag
docker commit cb439fb2c714  finleyma/php-dev:tp3.2

問題:
這個專案的環境是有了,但是是多人開發,我如何將我的配好的映象分享給他人呢?
見下篇


相關文章