Fixing docker storage driver issues in Ubuntu
Updating an Ubuntu system with a simple apt-get update
and upgrade
I faced the following issue (I’ve cleaned the output a bit):
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
invoke-rc.d: initscript docker, action "start" failed.
...
Failed to start Docker Application Container Engine.
docker.service: Unit entered failed state.
docker.service: Failed with result 'exit-code'.
...
dpkg: error processing package docker-ce (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
docker-ce
E: Sub-process /usr/bin/dpkg returned an error code (1)
And docker was not responding anymore, stuck in a half-updated status.
Checking systemctl status docker.service
and journalctl -u docker.service
I found a message regarding several storage drivers being defined:
Error starting daemon: error initializing graphdriver: /var/lib/docker contains several valid graphdrivers: overlay, overlay2; Please cleanup or explicitly choose storage driver (-s <DRIVER>)
After googling a bit, I found someone which had a similar issue, and the solution
Please note: if you change to a different storage driver, your images and containers may seem to dissapear (although they will probably be still there). Check how to backup images for information about changing the storage driver.
Fixing the isue: define the storage driver
1.- Stop Docker service
sudo systemctl stop docker
2.- Edit (or create) /etc/docker/daemon.json
and define the storage driver (use the current storage driver your system is using)
{
"storage-driver": "overlay2"
}
3.- Restart Docker service
sudo systemctl start docker
4.- Verify with docker info
...
Storage Driver: overlay2
...