DockerDekstop掛載相關設定
解決windowsDocker容器檔案交流問題

Docker Dekstop

  • Docker Dekstop本身可以在Windows 上執行(基於wsl),簡單使用沒問題,然而需要匯出匯入、掛載檔案就比較麻煩,

  • wsl2可以透過加入一個中間橋(例如一個ubuntu)掛載雙方來達成操作檔案的目的

  • PS.一般教學會用到Windows市集安裝,但我個人特別不喜歡Windows內建的那些東西,啥更新、市集全都在安裝後就砍光光了,所以只能全手動

必要環境

Windows 10 64-bit:Home or Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher.

啟動wsl與hyper-V

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

安裝ubuntu

  • 去微軟官方拿,我是選ubuntu-18.04版本

  • 手動下載網址: https://aka.ms/wsl-ubuntu-1804

  • 下載完直接改副檔名成.zip之類的,解壓縮

    • 注意好像必須在C槽且有管理員權限

image-20220118222409803

  • 執行這個一臉欠執行的.exe就會開始安裝,並且要求輸入建立用戶與密碼,記住帳號密碼

image-20220118222539556

# 查看剛剛點ubuntu1804.exe裝的是否成功
wsl -l -v

# 將 WSL 2 設定為預設版本
wsl --set-default-version 2

# 設定 WSL 預設 的Linux
wsl --set-default Ubuntu-18.04

安裝Windows Terminal

  • cmd的進階版是power shell,power shell又被Windows Terminal整合,同時更好看好用
  • 能夠原生支援Unicode、操作子系統的Linux,Win11版本還可以直接開linux GUI
choco install microsoft-windows-terminal
  • 啟動

image-20220118223820117

開啟橋接

image-20220118224851959

  • 回Windows Terminal試試docker指令,非常OK

image-20220118225617972

docker常用指令

// 拉映像
docker pull 映像名

// 進入容器
docker run -it <容器ID或標籤> /bin/bash

// 退出容器
exit

// 查看容器
docker ps

// 開關容器
docker stop <容器ID或標籤>
docker start <容器ID或標籤>
docker restart <容器ID或標籤>

// 刪除
docker rm -f <容器ID或標籤>

掛載連接

  • 在windows系統中執行:
cp {WIN_DATA} \\wsl$\Ubuntu\home

其中\wsl$\Ubuntu\home是WSL檔案系統Ubuntu發行版本的\home目錄。

  • 進入到Ubuntu系統。執行
wsl -d Ubuntu

# 然後執行
docker run -v /home:{DOCKER_PATH} -it {IMAGE}
  • 進入docker後,IO操作就飛快了

個人經驗

個人摸索出簡單適合新手的用法

  • 開啟docker desktop
  • 開啟Windows Terminal,連線到WSL的ubuntu
  • 要讀取容器中的檔案,可以在docker desktop看volumes的data分頁,或直接找路徑
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
  • 要寫入容器中的檔案,直接開那個容器的CLI操作
    • 想知道容器CLI打開後檔案的確切路徑,用ls顯示當前下面有誰,用pwd查看當下在哪
    • 一個docker容器 內部就是一個linux,容器服務用的到設定檔案常常是在/usr/share/nginx之下
    • 也有一些比較特殊,通常是別人另外打包的就要自己找,例如/home/elasticsearch/elasticsearch-7.16.2/config
    • 使用cp指令拷貝
  • 如果要操作的量多,把WSL連圖形化介面,startxfce4為所欲為

上次修改於 2022-01-25