# Windows Docker Desktop - 手動複製既有資料到Volumes
前言:
鑒於自己尋尋覓覓終於弄懂怎麼用,希望避免以後忘記時可回顧並順便造福其他人。
## 安裝方法
略,這邊是使用WSL2安裝Ubuntu。
## 前情提要
- 本次使用情境:
欲在Windows環境下用docker desktop的pyinstaller-linux套件打包py檔供Linux系統執行。
> 參考資料:https://medium.com/%E6%88%91%E5%B0%B1%E5%95%8F%E4%B8%80%E5%8F%A5-%E6%80%8E%E9%BA%BC%E5%AF%AB/python-%E5%B0%87%E7%A8%8B%E5%BC%8F%E6%89%93%E5%8C%85%E7%82%BA%E5%9F%B7%E8%A1%8C%E6%AA%94-exe-mac-os-e9521bc87e24
- 使用並下載Image:
`docker pull cdrx/pyinstaller-linux`
> github: https://github.com/cdrx/docker-pyinstaller
> docker: https://hub.docker.com/r/cdrx/pyinstaller-linux/
- 使用方法
將`requirements.txt`及`sample.spec`放置在**所屬之src資料夾**下後執行
`docker run -v "$(pwd):/src/" cdrx/pyinstaller-linux`
如果沒有sample.spec,則執行後會產生在**所屬之src資料夾**下
`docker run -v "$(pwd):/src/" cdrx/pyinstaller-linux "pyinstaller sample.py"`
- 本次困境
找不到所屬src資料夾!不知道該如何從Windows上放資料進去。
由於docker是建立在WSL2架構的虛擬環境,所以很難在檔案總管找到。
## 開始
### 1. 下載Image
* 除了用docker pull指令外,也可以利用docker desktop Search功能下載。

* 載完後可以在local images找到他

### 2. 指定Container及Volumes
* 點擊image旁的Run按鍵

* 可以為之後的container取名,並設定Volumes位置及Envrioment變數

* 然而指定host path後卻發現資料夾裡的東西沒有跟著進去?
可以到containers -> sample -> Inspect 的 mounts連結,找到所屬的volumes是哪一個。


* 看到Data頁籤發現只有資料夾沒有檔案。
於是只好放棄可惡的UI介面,開啟Powershell。
```
docker cp local_path/sample.spec sample:src
docker cp local_path/requirements.txt sample:src
```
local_path可以用絕對路徑C:/xxx.txt
container path是container-name:src 或 container-id:src
src就是指container預設的volume位置
* 指令下完後就可以到volums看到檔案已經放入了!

* 從container:src反過來匯出到windows host,只需要位置互換即可
```
docker cp sample:src/result.txt local_path
```