在開發的過程中,我們會把很重要的資訊、secret key等,使用環境變數的方式,來對這些資訊進行保護,以免遭到外洩。
在 Docker 中也是一樣的,我們在使用容器時,也不希望映像檔裡暴露著各種重要資料,所以我們會由外部來提供這些資料,也就是在建立容器時,設置好相對應的環境變數。
這裡就假設讀者都是有一定基礎的開發者,所以就不解釋環境變數是什麼了。
當我們想要啟動具有環境變數設定的容器時,我們必須要在建立該容器時,就設定好要帶入的環境變數。
設定環境變數的指令參數為 -e
:
docker run --name postgres_with_e -e POSTGRES_PASSWORD=mysecretpassword -d postgres
這是一個 postgresSQL 的容器, POSTGRES_PASSWORD
為內部的環境變數, mysecretpassword
為該環境變數的值。
如果我們不給予環境變數的話,就無法正常啟動:
docker run --name postgres_without_e -d postgres
docker container ls
這時應該看不到 postgres_without_e
。
如果我們去看他的 log:
docker container logs postgres_without_e
就會發現有錯誤訊息。
上述的說明主要是針對啟動時,必填環境變數的例子。
有時,我們使用 -e
在設定建立容器時的環境變數時,仍有以下原因:
You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all connections without a password.
production
、 development
、 test
-e RAILS_ENV=production
花了不少天在介紹容器的相關指令,明天我們將會講解,如何把容器刪掉,容器刪掉又要注意些什麼?容器內的資料又何去何從?
這一系列的鐵人賽文章,都同步更新在我的部落格: https://wl02599509.github.io/