2017-08-10 40 views
0

我對Docker非常陌生,在閱讀了關於數據量之後,我仍然對我看到的行爲感到困惑。Docker on Windows數據持久性 - 主機映射vs數據量

在我撰寫文件,我有這樣一個MySQL的條目:

db: 
    image: mysql 
    restart: always 
    volumes: 
    - ./database:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: p4ssw0rd! 
    networks: 
    - back 

這映射/數據庫目錄/var/lib/mysql。創建的數據庫文件,我可以啓動Wordpress,安裝,添加一篇文章。這個問題,因爲它從來沒有堅持任何創建的數據。如果我重新啓動泊塢窗和執行:

docker-compose up -d

數據庫是空的。

此更改爲:

db: 
    image: mysql 
    restart: always 
    volumes: 
    - db_data:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: p4ssw0rd! 
    networks: 
    - back 

而且在這樣的量加入:

volumes: 
    db_data: 

現在仍然存在的泊塢數據量的數據,並重新啓動工作。在上次運行期間創建的任何數據仍然存在。

我如何得到這個使用主機映射目錄的工作?

我在思考使用卷的第二個例子是正確的嗎?

回答

0

Windows上的Docker卷的工作方式與Linux不同。基本上在Windows上,docker運行一個虛擬機,docker安裝在虛擬機內部。所以在你看來,你在Windows上本地運行docker命令,但實際的東西發生在VM內部的後臺。

docker run -v d:/data:/data alpine ls /data 

首先,您需要在docker設置中使D:共享。你可以找到詳細的文章,解釋的步驟,這樣做

https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c

+0

是啊,我把所有的共享主機驅動作用。我可以看到所有文件都被加載到'\ database'目錄中。我只是感到困惑,爲什麼它似乎在每次啓動時重寫這些文件。 – Jammer