zoukankan      html  css  js  c++  java
  • 修改docker 容器的存储地址 & docker & container & wsl & win10

    HowTo: Change Docker containers storage location with WSL2 on Windows 10

    Once I started playing with Docker on Windows it quickly turned out that latest version heavily rely on WSL 2, in comparison to an older Hyper-V based approach. One thing that changed significantly during this technology transition was lack of a setting screen to actually define the location (and other params), where the containers and downloaded images should be stored. As the space they occupy grows really fast and default is not always the best place for it!

    I don’t understand why, but because of such practices (i.e. most of developer tools blindly assuming only drive C: exists inside the PC and is also infinite storage at the same time), the free space on a system drive runs extremely fast towards 0MB available. I would be very happy, if there would have been any management console tool, configuration file or at least a guide on how to reconfigure it to utilize drive D: instead. There is a Microsoft documentation, which describes a WSL configuration file, but it seems to be a bit old these days. At the same time I couldn’t find anything useful on Docker website itself.

    What I finally spot was this tricky solution from Franks Chow on StackOverflow.

    Let me quote all required steps here too:

    1. Quit Docker Desktop

    2. Open Command Prompt (or PowerShell)

    3. List existing WSL storages

      $ wsl --list -v
      

      Expected output:

        NAME                   STATE           VERSION
      * docker-desktop         Running         2
        docker-desktop-data    Running         2
      
    4. Turn off WSL

      $ wsl  --shutdown
      

      Output:

        NAME                   STATE           VERSION
      * docker-desktop         Stopped         2
        docker-desktop-data    Stopped         2
      
    5. Create following path (with all subfolders):

      $ mkdir D:\Docker\wsl\data\
      
    6. Export containers and their data. This step can actually take some time depending on the size of the original ext4.vhdx file.

      $ wsl --export docker-desktop-data "D:\Docker\wsl\data\docker-desktop-data.tar"
      
    7. Unregister the container data from WSL. It will also automatically delete the ext4.vhdx from original location.

      $ wsl --unregister docker-desktop-data
      
    8. Import the container data, but keep it into another location (i.e. on drive D: as defined above). This will automatically create ext4.vhdx file from the backup.

      $ wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\data\docker-desktop-data.tar" --version 2
      
    9. Delete the exported .tar file: D:\Docker\wsl\data\docker-desktop-data.tar and nothing more!

    10. Start Docker Desktop and run your containers.

    Final thoughts

    This whole approach seems to be a little hackish. I am surprised it was the only working solution. Is there anything actually blocking or preventing Docker Team or Microsoft to simplify this setting and providing it as nice UI anywhere or as single command at least?

    Great it’s achievable and done!

    PS C:> wsl -l
    Debian (默认)
    PS C:> wsl --list -v
      NAME                   STATE           VERSION
      docker-desktop-data    Running         2
      docker-desktop         Running         2
    PS C:> wsl --list -v
    * Debian                 Running         2
      docker-desktop-data    Stopped         2
    PS C:> wsl --list -v
      NAME                   STATE           VERSION
    * Debian                 Running         2
      docker-desktop-data    Stopped         2
      docker-desktop         Running         2
      NAME                   STATE           VERSION
    * Debian                 Running         2
      docker-desktop-data    Stopped         2
      docker-desktop         Running         2
    PS C:> wsl  --shutdown
    PS C:> wsl --list -v
    * Debian                 Stopped         2
      docker-desktop-data    Stopped         2
      docker-desktop         Stopped         2
    PS C:> wsl --export Debian "D:\Users\[username]\AppData\Local\Docker\wsl\data\debian.tar"
    PS C:> wsl --export docker-desktop "D:\Users\[username]\AppData\Local\Docker\wsl\data\docker-desktop.tar"
    PS C:\Users\[username]> wsl --export docker-desktop-data "D:\Users\[username]\AppData\Local\Docker\wsl\data\docker-desktop-data.tar"
    PS C:\Users\[username]> wsl --unregister Debian
    正在注销...
    PS C:\Users\[username]> wsl --unregister docker-desktop-data
    正在注销...
    PS C:\Users\[username]> wsl --unregister docker-desktop
    正在注销...
    PS C:\Users\[username]> wsl --import Debian "D:\Users\[username]\AppData\Local\Docker\wsl\data" D:\Users\[username]\AppData\Local\Docker\wsl\data\debian.tar --version 2
    PS C:\Users\[username]> wsl --import docker-desktop "D:\Users\[username]\AppData\Local\Docker\wsl\data" D:\Users\[username]\AppData\Local\Docker\wsl\data\docker-desktop.tar --version 2
    提供的安装位置已在使用中。
    PS C:\Users\[username]> wsl --import docker-desktop-data "D:\Users\[username]\AppData\Local\Docker\wsl\data" D:\Users\[username]\AppData\Local\Docker\wsl\data\docker-desktop-data.tar --version 2
    提供的安装位置已在使用中。
    PS C:\Users\[username]> wsl --list -v
      NAME      STATE           VERSION
    * Debian    Stopped         2
    PS C:\Users\[username]> wsl --import docker-desktop-data "D:\Users\[username]\AppData\Local\Docker\wsl\data" "D:\Users\[username]\AppData\Local\Docker\wsl\data\docker-desktop-data.tar" --version 2
    提供的安装位置已在使用中。
    PS C:\Users\[username]> wsl --list -v
      NAME                   STATE           VERSION
    * Debian                 Running         2
      docker-desktop-data    Running         2
      docker-desktop         Running         2
    PS C:\Users\[username]> 
    

      

  • 相关阅读:
    Android Time类 奇葩的设定
    zjut1698Coins
    zjut1689联盟
    zju1024Calendar Game
    hdu2863Top Shooter
    hdu3974Assign the task
    hdu1150Machine Schedule
    线段树无止尽版
    zjut1684AirCraft
    hdu3926Hand in Hand
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/15739867.html
Copyright © 2011-2022 走看看