Skip to content

Instantly share code, notes, and snippets.

Last active November 23, 2023 05:49
Star You must be signed in to star a gist
Save wdullaer/f1af16bd7e970389bad3 to your computer and use it in GitHub Desktop.
Install Latest Docker and Docker-compose on Ubuntu
# Ask for the user password
# Script only works if sudo caches the password for a few minutes
sudo true
# Install kernel extra's to enable docker aufs support
# sudo apt-get -y install linux-image-extra-$(uname -r)
# Add Docker PPA and install latest version
# sudo apt-key adv --keyserver hkp:// --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
# sudo sh -c "echo deb docker main > /etc/apt/sources.list.d/docker.list"
# sudo apt-get update
# sudo apt-get install lxc-docker -y
# Alternatively you can use the official docker install script
wget -qO- | sh
# Install docker-compose
COMPOSE_VERSION=`git ls-remote | grep refs/tags | grep -oE "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | sort --version-sort | tail -n 1`
sudo sh -c "curl -L${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
sudo chmod +x /usr/local/bin/docker-compose
sudo sh -c "curl -L${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
# Install docker-cleanup command
cd /tmp
git clone
cd 76b450a0c986e576e98b
sudo mv docker-cleanup /usr/local/bin/docker-cleanup
sudo chmod +x /usr/local/bin/docker-cleanup
Copy link

Nihamavasa commented Oct 19, 2017

To overwrite exisiting docker-compose version one may use
COMPOSE_VER=$(curl -s -o /dev/null -I -w "%{redirect_url}\n" | grep -oP "[0-9]+(\.[0-9]+)+$")
curl -o $(which docker-compose) -L$COMPOSE_VER/docker-compose-$(uname -s)-$(uname -m)
Just if there allready is a docker-compose binary
But this is not fully tested.

Copy link

chiluap commented Nov 29, 2017

Hi there, thank you for taking the pain away from installing the latest docker version.

One little improvement though:
The script is dependent on git being installed.
Maybe add something like:
hash git 2>/dev/null || { echo >&2 "I require git but it's not installed. Aborting..."; exit 1;}

Copy link

Oh my dayum! This script is delicious :)
Thank you sir.

Copy link

A little warn here : please consider using -E (extended regex) instead of -P (Perl regex) in your grep expression. => Some grep may not support -P : busybox for example does not support this flag.

Copy link

hgraca commented Mar 4, 2020

Nice script, tkx.

However, sometimes the versions of docker-compose are not ordered and so the version downloaded is not the last one.

This fixes it:

COMPOSE_VERSION=`git ls-remote | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | sort --version-sort | tail -n 1`

Copy link

wdullaer commented Mar 5, 2020

I haven't updated this in a long time. I'm happy to see it still works.

Thanks for the feedback, I'll add your fix in.

Copy link

Very useful script, thanks for the job, hope you have a good day!

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