Create a gist now

Instantly share code, notes, and snippets.

Embed
How to resize Docker for Mac Disk image and set the default size for new images

Set the default size for new Docker for Mac disk images

UPDATE: The instructions here are no longer necessary! Resizing the disk image is now possible right from the UI since Docker for Mac Version 17.12.0-ce-mac49 (21995).

If you are getting the error: No space left on device

Configuring the qcow2 size cap is possible in the current versions:

# my disk is currently 64GiB
$ /Applications/Docker.app/Contents/MacOS/qemu-img info ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
image: /Users/djs/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
file format: qcow2
virtual size: 64G (68719476736 bytes)
disk size: 28G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
    refcount bits: 16
    corrupt: false

# I can increase or decrease the default cap by:
$ cd ~/Library/Containers/com.docker.docker/Data/database/
$ git reset --hard
HEAD is now at 8635944 last-start-time changed at 1480009710
# The com.docker.driver.amd64-linux/disk/size file (and the disk dir) may not exist. If they don't exist create them.
$ cat com.docker.driver.amd64-linux/disk/size
65536
$ echo 131072 > com.docker.driver.amd64-linux/disk/size
$ git add com.docker.driver.amd64-linux/disk/size
$ git commit -s -m 'increase size to 128GiB'
[master 60861de] increase size to 128GiB
 1 file changed, 1 insertion(+), 1 deletion(-)

# delete the disk -- this unfortunately deletes all images and containers
$ rm ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
# now I need to restart the app

For anyone wanting to use an external drive, you can also change the location of the Docker.qcow2 by editing the database key com.docker.driver.amd64-linux/disk/path. There is no UI element for this yet.

Credit for this procedure goes to @djs55 and was taken from https://github.com/docker/for-mac/issues/371#issuecomment-262826610 .

Resize existing Docker for Mac disk image

If you are getting the error: No space left on device

Download gparted from http://gparted.org/download.php.

Close the Docker for Mac Application and wait for it to shutdown completely.

brew update
brew install qemu
cd ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/
qemu-img info Docker.qcow2   # shows you current disk size
qemu-img resize Docker.qcow2 +100G  # make it 100GB larger
qemu-img info Docker.qcow2    # check the new size
qemu-system-x86_64 -drive file=Docker.qcow2  -m 512 -cdrom ~/Downloads/gparted-live-0.27.0-1-i686.iso -boot d -device usb-mouse -usb

Wait for the VM to boot (can take a long time). For any questions asked (boot option, keyboard layout, language) the default is ok. Double click the gparted Icon. You should see swap space, the main partition and 100GB of free space. Select the main partition. Click Resize in the toolbar and drag the partition limit to fill the whole space. Click Apply. Wait for it to finish resizing and then quit the app and shutdown the gparted machine. Now start Docker for Mac again.

Run the following command to check the available diskspace inside the docker vm:

docker run --rm --privileged debian:jessie df -h

Make sure you shut down the gparted vm cleanly and don't access Docker.qcow2 while the procedure is running. Otherwise the disk image might get corrupted.

Credit for this procedure goes to the conversation in https://forums.docker.com/t/consistently-out-of-disk-space-in-docker-beta/9438/6. Especially to jgielstra.

@diegodorgam

This comment has been minimized.

Show comment
Hide comment
@diegodorgam

diegodorgam Apr 26, 2017

and what should I do to shrink the image?

and what should I do to shrink the image?

@KjellKod

This comment has been minimized.

Show comment
Hide comment
@KjellKod

KjellKod May 12, 2017

same thing. Just resize to shrink it. drag and drop

same thing. Just resize to shrink it. drag and drop

@scsmith

This comment has been minimized.

Show comment
Hide comment
@scsmith

scsmith Sep 27, 2017

In case it helps anyone else, this didn't appear to work for me in edge (17.09.0-ce-rc3-mac30) however, going back to stable (17.06.2-ce-mac27) this worked like a charm. Thanks!

scsmith commented Sep 27, 2017

In case it helps anyone else, this didn't appear to work for me in edge (17.09.0-ce-rc3-mac30) however, going back to stable (17.06.2-ce-mac27) this worked like a charm. Thanks!

@wamonite

This comment has been minimized.

Show comment
Hide comment
@wamonite

wamonite Nov 21, 2017

Doesn't work in 17.09.0-ce-mac35. If you roll back to 17.06.2-ce-mac27, that works fine. Upgrading to 17.09 leaves you with a qcow2 file with the correct virtual size, but containers are only given access to 64GB. Creating a new qcow2 on 17.09, Docker uses com.docker.driver.amd64-linux/disk/path but ignores size.
Edit: On a fresh install of 17.09, stopping Docker and running qemu-img resize Docker.qcow2 +100G then restarting works. VM looks like it resizes the fs itself. Moving the file seems to be broken via the UI though docker/for-mac#2170

wamonite commented Nov 21, 2017

Doesn't work in 17.09.0-ce-mac35. If you roll back to 17.06.2-ce-mac27, that works fine. Upgrading to 17.09 leaves you with a qcow2 file with the correct virtual size, but containers are only given access to 64GB. Creating a new qcow2 on 17.09, Docker uses com.docker.driver.amd64-linux/disk/path but ignores size.
Edit: On a fresh install of 17.09, stopping Docker and running qemu-img resize Docker.qcow2 +100G then restarting works. VM looks like it resizes the fs itself. Moving the file seems to be broken via the UI though docker/for-mac#2170

@rsharpy

This comment has been minimized.

Show comment
Hide comment
@rsharpy

rsharpy Dec 4, 2017

I can confirm that it worked for me for 17.09.0-ce-mac35. I did +100GB and followed every step with gparted resizing.

rsharpy commented Dec 4, 2017

I can confirm that it worked for me for 17.09.0-ce-mac35. I did +100GB and followed every step with gparted resizing.

@stefanfoulis

This comment has been minimized.

Show comment
Hide comment
@stefanfoulis

stefanfoulis Jan 28, 2018

Resizing the disk image is now possible right from the UI since Docker for Mac Version 17.12.0-ce-mac49 (21995).

Owner

stefanfoulis commented Jan 28, 2018

Resizing the disk image is now possible right from the UI since Docker for Mac Version 17.12.0-ce-mac49 (21995).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment