簡體   English   中英

更改 Docker 機器位置 - Windows

[英]Change Docker machine location - Windows

我在 Windows 7 上使用 docker 工具箱來運行 docker。 (碼頭工人版本 1.9.1)

事實證明,docker 機器在 C:\\Users\\username\\.docker\\machine\\machines\\default 處創建了它的 VM。 當我提交映像時,此位置的 VM 大小會膨脹。 由於是 Windows,我負擔不起 C 盤上的奢侈空間。

有什么辦法可以更改默認機器的位置嗎?

這對我來說在 Windows 7 上非常有效:

  1. 將 MACHINE_STORAGE_PATH 環境變量設置為要用於 Docker 機器/VM、緩存等的位置的根目錄。
  2. 安裝 Docker 工具箱
  3. 運行 Docker 快速入門終端

Docker Toolbox 現在將在 MACHINE_STORAGE_PATH 指向的位置創建所有文件。

更新:

請注意,使用新存儲路徑創建新 VM 並不理想,因為 Docker 快速入門終端腳本似乎不適用於任何未命名為“默認”的內容。

如果您已經在 C: 驅動器中安裝了一個 VM,那么最簡單的方法是轉到 Oracle VirtualBox 並刪除“默認”VM,卸載 Docker Toolbox,刪除 C:\\Users\\<username>。 docker\\,然后按照上面的 3 個步驟操作。

注意:可能不需要卸載和重新安裝 Docker Toolbox。 但沒有它我還沒有測試過。

更新

要移動 Docker 證書,請將DOCKER_CERT_PATH變量設置為指向新驅動器的路徑。 感謝@Nutle 的提示。

您可以將.docker目錄移動到另一個驅動器並為其創建一個連接點。

請注意,常規快捷方式將不起作用。

例如:

.docker目錄從C:\\Users\\usernameD:\\

並運行:

C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker

自 2015 年以來,現在(2017 年 6 月) Hyper-V允許您定義VHDX文件的位置

請參閱Docker for Windows 1.13.0, 2017-01-19 (stable)

可以移動包含圖像和非主機安裝卷的 VHDX 文件(使用 UI 中的“高級”選項卡)

這將用一行修改%APPDATA%\\Docker\\settings.json

"MobyVhdPathOverride":"C:\\Users\\Public\\Documents\\Hyper-V\\New folder\\MobyLinuxVM.vhdx"

https://cdn-enterprise.discourse.org/docker/uploads/default/optimized/2X/6/6193445cf15811ce18317c727af258adb2d16c9d_1_690x447.jpg

有關更多信息,請參閱此線程


原答案

目前 2015 年,docker-machine 強制使用%USERPROFILE%
libmachine/mcnutils/utils.go#L17-L25

正如第 499 期所評論的:

同時,用戶如何能夠指定.docker/machine/*文件的存儲位置?

您可以通過在命令行上指定--storage-path或使用環境變量MACHINE_STORAGE_PATH

(你可以看到它在PR 1941 中實現)

Joost Den Boer 在評論中指出

剛剛在 Mac 上嘗試了 ' -s <path> ',它似乎工作正常。
可能不明顯的是 path 選項位於 command 之前
運行“ docker-machine -s /Volumes/other/location' create --driver=virtualbox ”在另一個位置創建了一個新的 VirtualBox 鏡像。

只需使用 VirtualBox 圖形界面重新定位文件disk.vmdk

在此處輸入圖片說明

  1. 將文件C:\\Users\\{myUsername}\\.docker\\machine\\machines\\default\\disk.vmdk到另一個文件夾中,比如F:\\docker-image\\ C:\\Users\\{myUsername}\\.docker\\machine\\machines\\default\\disk.vmdk F:\\docker-image\\
  2. 打開VirtualBox ,選擇default VM 並打開Settings
  3. 打開Storage ,選擇當前disk.vmdk並釋放它(或刪除它)。
  4. 單擊Choose Virtual Hard Disk File...並在F:\\docker-image\\搜索復制的文件
  5. 出現警告:VirtualBox 抱怨舊的 VM UID,然后轉到菜單File ,選擇Virtual Media Manager...並釋放或刪除舊的disk.vmdk
  6. 重試4. ,大功告成!
  7. 如果您的環境需要,則還對 boot2docker.iso、快照文件夾、視頻捕獲進行重新定位。

在運行 docker 快速啟動終端時輸入這兩個命令。

我想你的新位置是“D:\\docker”,你的新機器名稱是“docker1”

export MACHINE_STORAGE_PATH=D:\\docker

docker-machine create --driver=virtualbox docker1

這應該在您的新位置創建具有指定名稱的新機器。

我無法讓 MACHINE_STORAGE_PATH 環境變量方法工作。 首次初始化機器時,它一直抱怨缺少證書。 仍然在 Windows 7 上,所以必須使用 docker-toolbox。

我通過以下方式解決了這個問題:

  1. 卸載 Docker Toolbox 並重啟機器
  2. 打開管理員提示符(找到命令提示符,按住 shift,選擇“以管理員身份運行”)
  3. 從 %USERPROFILE% 中刪除 .docker: rmdir /S %USERPROFILE%.docker
  4. 在別處創建名為 .docker 的文件夾: mkdir a:\\.docker
  5. mklink /J %USERPROFILE%.docker a:\\.docker
  6. 關閉管理員命令提示符
  7. 重新安裝 Docker 工具箱
  8. 使用 Docker 快速入門終端鏈接來引導一切。
  9. Kitematic 現在也可以打開(盡管我必須在第一個錯誤時選擇“使用虛擬框”選項。

我對上述任何解決方案都遇到了一些麻煩,但這對我有用:

  • 定義MACHINE_STORAGE_PATH環境變量以指向所需的目錄/文件夾。
  • 像往常一樣安裝 docker-toolbox,如果這對你.docker ,那很好,但對我來說它仍然安裝在.docker目錄中。
  • 為了解決這個問題,我已經停止並從用戶目錄中刪除了與.docker文件夾一起創建的默認機器。
  • 編輯了start.sh腳本並在頂部添加了一行:

例如

export MACHINE_STORAGE_PATH=D:\\Docker
  • 運行 Docker Quickstart Terminal Shortcut,它在所需文件夾中重建了默認機器

此答案適用於使用 Docker Toolbox 的人(Windows 10 Home Build 1909,您可以按照以下步驟進行 docker 安裝,然后更改位置。我沒有添加任何圖像)

安裝 Docker Toolkit 和 VM 必須在安裝 docker toolkit 后使用 Admin Privileges 安裝(*因為 Docker Toolkit 也安裝 VM,但它的版本較低,並且會導致其他 iso 文件出現問題,您也可以取消選中,在這種情況下,*) . 現在我們必須更改 disk.vmdk 的位置並更新 VM 中的新位置。

  • 這里安裝 Docker 工具箱。 按照提供的說明進行操作
  • 現在下載虛擬機​​ v6+
  • 以管理員身份安裝虛擬機(通過右鍵單擊並選擇)
  • 轉到VirtualBox.exe不是安裝程序)所在的位置並右鍵單擊它(您可以從桌面上創建的快捷方式中找到)
  • 轉到屬性 --> 兼容性 --> 更改所有用戶的設置 --> 選擇run this program as administrator
  • 現在關閉 VM 如果它正在運行並運行Kitematic ,如果它失敗(它可能會)然后選擇與 VM 相關的選項(只有 2 個選項)
  • 這次它會起作用,現在關閉它

更改將下載圖像的位置

  • 打開您的 VM 並關閉新運行的default映像(右鍵單擊 -> 關閉 --> 關閉電源)
  • 將您的disk.vmdk文件(對我而言,它位於C:\\Users\\Dell\\.docker\\machine\\machines\\default\\disk.vmdk )復制粘貼到您要存儲下載的圖像的位置(基本上是C:\\Users\\Dell\\.docker\\machine\\machines\\default\\disk.vmdkdisk.vmdk當您使用 docker 時, disk.vmdk大小會增加)
  • 現在我們還需要告訴虛擬機這個變化
  • 右鍵單擊default圖像並轉到設置
  • 選擇存儲
  • 通過右鍵單擊刪除disk.vmdk附件 --> 刪除(這是綁定 disk.vmdk 的舊路徑)
  • 單擊file --> virtual media manager並從此處刪除disk.vmdk (現在 VM 不知道是否存在這樣的 disk.vmdk)
  • 右鍵default鏡像-->存儲--> add hard disk (這個選項就在那個iso鏡像的上面)
  • 現在選擇您已粘貼到某處的disk.vmdk
  • 現在運行你的 docker cli 然后運行這個命令docker run hello-world
  • 如果沒有錯誤,那么一切都完成了
  • 您可以通過檢查這兩個 vmdk 磁盤的大小,然后提取一些新映像來驗證大小



我從安裝開始就寫了一個非常描述性的答案,因為我確實遇到了一些問題,所以想讓其他人非常直接。
如果你想,你可以從你的 C 驅動器中刪除你的 disk.vmdk 磁盤(舊的)

創建名為 c:\\programdata\\docker\\config\\daemon.json 的文件,內容如下,其中 e:\\images 是您要存儲所有圖像的位置等。重新啟動 docker。

{ "graph": "e:\\\\images" }

這就像一個魅力

參考 - https://forums.docker.com/t/where-are-images-stored/9794/11

截至最新版本,這些答案已過時。 該位置可在“設置”用戶界面中配置。

https://github.com/docker/for-win/issues/333

我發現很多這些答案都沒有數據,至少它們在我的環境中不起作用:win10 PRO,docker desktop community 2.0.0.3。 最后,我通過這種方法解決了這個問題:

  1. 卸載碼頭工人

  2. 打開 Hyper-V 管理器(按 WIN 鍵,然后輸入“Hyper”)

  3. 更改Hyper-V設置中的默認虛擬硬盤位置(而不是 VM 設置)並確認

  4. 安裝碼頭工人

  5. 在 docker 設置的高級選項中檢查磁盤映像位置

我使用 Windows 10 和 Docker 桌面(社區)版本 2.0.0.0,我想將 vhdx 文件移動到另一個驅動器。

右鍵單擊 Docker 桌面 -> 設置在此處輸入圖片說明 然后 Docker 桌面 UI 將打開轉到 Advance -> Disk image location 在此處輸入圖片說明 只需將路徑更改為新目標,整個過程對我來說既流暢又快速 - 它會自動將 vhdx 文件從原始路徑復制到新路徑重新啟動 docker 並且所有工作都按預期進行

對於 Windows 7:

  • 將您的 disk.vmdk 文件(對我來說它存在於 C:\\Users\\name.docker\\machine\\machines\\default\\disk.vmdk)復制粘貼到您要存儲下載的圖像的位置(基本上是 disk.vmdk當您使用 docker 時,大小會增加)

  • 在 Virtualbox 中右鍵單擊默認圖像並轉到設置選擇存儲通過右鍵單擊刪除 disk.vmdk 附件 --> 刪除

  • 單擊文件 --> 虛擬媒體管理器並從此處刪除 disk.vmdk

  • 右鍵單擊默認映像--> 存儲--> 添加硬盤(此選項位於該iso 映像的正上方)現在選擇您已粘貼到某處的disk.vmdk

  • 現在更改 config.json 中的此路徑 (C:\\Users\\name.docker\\machine\\machines\\default\\config.json) 使用這個新的路徑更改存儲路徑,您可以在其中放置硬盤的位置(“StorePath”: "F:\\docker-image")

節省。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM