使用postgres圖片時,我有一些奇怪的行爲。docker stop && docker rm並沒有真正擺脫我的容器
我已經創建了一個腳本,掛載到/docker-entrypoint-initdb.d
並使用單用戶模式初始化數據庫。
然而,當我更新腳本,運行
docker stop postgres_db
docker rm postgres_db
,比啓動一個新的容器,該數據庫是舊的。它不會改變。
我使用的是無業遊民box-cutter/ubuntu1404-docker
當我運行
vagrant destroy -f
vagrant up
,比重新創建新的泊塢窗容器中,更改應用。
爲什麼它不工作,當我剛剛刪除舊的容器,並開始一個新的?碼頭工人在哪裏保持它的緩存,我可以清除,真正得到一個新的形象?
更新:
我使用的確切泊塢窗文件是一個小擴展到原來的一個。它只是安裝orafce插件link,內容:
FROM postgres:9.4
RUN apt-get update && \
apt-get install -y postgresql-9.4-orafce && \
rm -rf /var/lib/apt/lists/*
我用來啓動一個新的容器的命令是:
docker run --name="postgres_db" \
--restart="always" \
-e POSTGRES_PASSWORD=PostgresPassword \
-p 5432:5432 \
-v /data:/var/lib/postgresql/data \
-v /vagrant/container_data/init_scripts:/docker-entrypoint-initdb.d \
-v /vagrant/container_data/tmp:/tmp \
-d grmanit/postgres
的init_scripts
文件夾中包含一個腳本,創建一個新的數據庫和新用戶。
澄清:
當我改劇本在我init_scripts
文件夾,比如修改數據庫的名稱,並且比停止+刪除舊的容器,並開始一個新的,它不具有任何影響。
當我改變的postgres
,其被設置爲在docker run
命令的環境變量的密碼(在這個例子中它是PostgresPassword
),並再次停止+刪除舊的容器和比開始一個新的與新的環境變量,它再次沒有任何影響。我仍然需要使用舊的密碼連接到數據庫,新的不起作用。
但是當我銷燬虛擬機並重新啓動時,我擁有之前定義的配置。然而,再次改變它們需要我銷燬並重新啓動虛擬機,這比僅僅銷燬碼頭集裝箱並啓動新虛擬機花費的時間要長得多。
請包括dockerfile(如果有)以及用於啓動容器的確切命令 –
docker vs VM的一個怪癖是每個'docker run'都會將原始圖像的新副本創建爲新的容器,因此,似乎變化不會持續。如果這是個問題,學習使用'-v'或者'docker commit'爲永久文件裝入卷可能會有所幫助(但不要習以爲常)。 – Paul