[英]Docker for Windows - Mount directory is coming empty
我有一個安裝了 MYSQL 的圖像。 我需要將 /var/lib/mysql 目錄映射到我的主機系統。 以下是我在該目錄中看到的屏幕截圖,當我使用以下命令時
docker run --rm -it --env-file=envProxy --network mynetwork --name my_db_dev -p 3306:3306 my_db /bin/bash
現在,當我嘗試從我的主機(Windows 10)掛載一個目錄時,通過從同一個映像運行另一個容器,mysql 目錄是空白的。
docker run --rm -it --env-file=envProxy --network mynetwork -v D:/docker/data:/var/lib/mysql --name my_db_dev1 -p 3306:3306 my_db /bin/bash
也試過這個,但沒有奏效
docker run --rm -it --env-file=envProxy --network mynetwork -v D:\docker\data:/var/lib/mysql --name my_db_dev1 -p 3306:3306 my_db /bin/bash
我看到的一件事是,路徑中的 mysql 目錄現在具有 root 用戶,而不是之前的情況下的 mysql。
我希望將現有容器(mysql目錄)中的所有內容復制回主機掛載目錄
那可能嗎 ? 以及如何實現?
如果您需要將文件從容器中獲取到主機中,最好使用docker cp
命令: https : //docs.docker.com/engine/reference/commandline/cp/
它看起來像: docker cp my_db_dev1:/var/lib/mysql d:\\docker\\data
實際上,我想在其他容器之間保留數據庫文件,所以我想使用卷
在這種情況下,您必須:
開始使用docker-compose
協調容器。
在docker-compose.yml
,創建卷,該卷在所有容器之間共享。 就像是:
泊塢窗,compose.yml
version: '3'
services:
db1:
image: whatever
volumes:
- myvol:/data
db2:
image: whatever2
volumes:
- myvol:/data
volumes:
myvol:
描述: https : //docs.docker.com/compose/compose-file/#volume-configuration-reference
使用Windows路徑寫反斜杠“ \\”,建議使用變量指定路徑。 在Linux的另一端,使用斜杠“ /”,例如:
docker run -it -v %userprofile%\work\myproj\some-data:/var/data
嘗試關閉防病毒程序或防火牆。 然后單擊設置/共享驅動器下的“重置憑據”。 那對我有用。
最好的祝福。
首先創建一個如下所示的文件夾結構,
C:\用戶\rajit\MYSQL_DATA\MYSQL_CONFIG
C:\用戶\rajit\MYSQL_DATA\DATA_DIR
然后請像下面這樣調整,
docker pull mysql:8.0
docker run --name mysql-docker -v C:\Users\rajit\MYSQL_DATA\MYSQL_CONFIG:/etc/mysql/conf.d --env="MYSQL_ROOT_PASSWORD=root" --env="MYSQL_PASSWORD=root" --env="MYSQL_DATABASE=test_db" -v C:\Users\rajit\MYSQL_DATA\DATA_DIR:/var/lib/mysql -d -p 3306:3306 mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.