2017-09-27 30 views
0

我正在運行帶有一些docker容器的ubuntu 16.04 LTS服務器。其中一個容器是一個mongoDB容器,用於存儲我的數據。 現在我試圖通過mongodump進行備份。 對我來說,問題在於,mongoDb作爲碼頭容器運行,備份應該存儲在碼頭容器之外。mongoDb docker實例的mongodump的正確語法?

我覺得這個語法是這樣的:

docker run \ 
    --rm \ 
    -it \ 
    --link DOCKER_CONTAINER_NAME:mongo_alias \ 
    -v /backup:/backup \ 
    mongo mongodump \ 
    --host mongo_alias \ 
    --out /backup/ 

但我不知道,因爲我有使用的參數...

這是我得到我的MongoDB容器,通過docker ps

7bee41bfa08a mongo:3.4 "docker-entrypoint..." 4 months ago Up 2 months 27017/tcp mongo_db 

這是我的搬運工,撰寫文件:

version: "3" 
services: 
    mongo_db: 
    container_name: mongo_db 
    image: 'mongo:3.4' 
    restart: 'always' 
    volumes: 
     - '/opt/mongo/project/live:/data/db' 

所以它應該看起來像這樣?

docker run \ 
    --rm \ 
    -it \ 
    --link mongo_db:mongo_alias \ # mongo_alias can be choosen freely? 
    -v /backup:/backup \   # Don't understand /backup:/backup 
    mongo mongodump \ 
    --host mongo_alias \ 
    --out /backup/    # This is in the root of the server? 

回答

0

定義要通過撰寫運行的備份。這將在與主mongo容器相同的網絡上創建新的容器。如果您有任何撰寫網絡定義,您需要在每個撰寫文件中複製它們。

創建備份命令第二撰寫文件:docker-compose-backup.yml

version: "3" 
services: 
    mongo_db_backup: 
    image: 'mongo:3.4' 
    volumes: 
     - '/opt/mongo/project/live_backup:/backup' 
    command: | 
     mongodump --host mongo_db --out /backup/ 

然後運行備份

docker-compose -f docker-compose-backup.yml run mongo_db_backup 
+0

但不會這個店的'mongo_db_backup'容器的備份? – user3142695

+0

@ user3142695不,它有'/ backup'卷映射到主機,就像你在命令行上做的那樣。 – Matt

+0

也許你想使用類似'/ opt/mongo/project/live_backup:/ backup'的捲來將它放置在數據附近? – Matt