2016-08-18 39 views
0

我正在用Jenkins構建一個帶有SQLLight數據庫的docker鏡像,我相信我想從Dockerfile構建數據庫並將其存儲到一個卷中,以便可以單獨導出卷。我開始構建爲:docker build -t FOO .,但是當我提取量數據:如何從新建圖像中獲取碼頭卷?

docker run --rm --volumes-from FOO -v $(pwd):/backup busybox tar cvf /backup/backup.tar /opt/webapp` 

我得到的錯誤:No such container: FOO

這當然是有道理的,因爲FOO是不是一個容器,它是一個圖像。但是,如何獲得容器標識符?我不能只讀Docker的輸出,因爲我在Jenkins構建中批量運行這個。

我感覺我正在以這種錯誤的方式前進。但是,正確的方法是什麼?

+0

想要提取圖像或由此圖像的容器生成的數據? – CMPS

+0

我想提取在Dockerfile中生成的卷的數據 – jonalv

回答

1

您需要運行基於FOO圖像的容器:

docker run -d --name BAR FOO 

然後你就可以訪問量:

docker run --rm --volumes-from BAR ... 
+0

我想我也應該執行docker stop BAR。似乎凌亂地啓動一個容器,然後立即停止它 – jonalv

+0

取決於容器。當沒有長時間運行的過程時,容器立即停止。 – Martin

1

運行你要備份的容器和直接做備份在該容器中(如果使用--entrypoint /bin/sh修改了入口點,請將其改爲/ bin/sh):

docker run --rm -v $(pwd):/backup FOO tar cvf /backup/backup.tar /opt/webapp 

或者,如果您必須在不同的容器中運行備份(例如,備份實用程序不包括在內),您只需要創建FOO容器,而不運行它:

docker create --name foo-vol FOO 
docker run --rm --volumes-from foo-vol -v $(pwd):/backup \ 
    busybox tar cvf /backup/backup.tar /opt/webapp 
docker rm -v foo-vol