Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
# sudo sh -c "echo deb https://get.docker.io/ubuntu 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- https://get.docker.com/ | sh
# Install docker-compose
COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1`
sudo sh -c "curl -L https://github.com/docker/compose/releases/download/${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 https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
# Install docker-cleanup command
cd /tmp
git clone https://gist.github.com/76b450a0c986e576e98b.git
cd 76b450a0c986e576e98b
sudo mv docker-cleanup /usr/local/bin/docker-cleanup
sudo chmod +x /usr/local/bin/docker-cleanup
@madtechsupport

This comment has been minimized.

Copy link

madtechsupport commented Feb 2, 2015

Hi, who wrote the docker-cleanup script?

@Lujaw

This comment has been minimized.

Copy link

Lujaw commented Feb 2, 2015

thanks for the script..

@wdullaer

This comment has been minimized.

Copy link
Owner Author

wdullaer commented Feb 12, 2015

@madtechsupport This script pulls it in from another gist of mine.
I initially got it from here: http://stackoverflow.com/a/23540202

@victor95pc

This comment has been minimized.

Copy link

victor95pc commented May 18, 2015

Thx man, it solves all my problems!

@jherax

This comment has been minimized.

Copy link

jherax commented Sep 20, 2015

Marvelous +1

@jamesmstone

This comment has been minimized.

Copy link

jamesmstone commented Oct 6, 2015

Quick install:

wget -O - https://gist.githubusercontent.com/wdullaer/f1af16bd7e970389bad3/raw/install.sh | bash or
wget -O - https://bit.ly/docker-install | bash (if you trust wdullaer and me :P)

@anand9

This comment has been minimized.

Copy link

anand9 commented Oct 12, 2015

had errors with installing compose, but this helped me, thanks :)

@were-oyomno

This comment has been minimized.

Copy link

were-oyomno commented Oct 17, 2015

thx mate, neat stuff!

@neomatrix369

This comment has been minimized.

Copy link

neomatrix369 commented Mar 24, 2016

I have a suggestion from a mate, who thinks adding Volume cleanup to the script could improve the script further, see https://twitter.com/theNeomatrix369/status/712983092865155072 - thanks mate for the script, now the rest of the Docker world knows about it as well ;)

@luislobo

This comment has been minimized.

Copy link

luislobo commented May 27, 2016

I've forked it, my version automatically takes the latest docker-compose version from the repository, so it's not fixed to 1.6.2
https://gist.github.com/luislobo/2dc3de67b7f2ddc623c239dff36962a0

@rhalff

This comment has been minimized.

Copy link

rhalff commented Jun 18, 2016

@luislobo: had to modify the grep to: grep -oP "[\w-\.]+$" so it detects the rc versions also. Right now the latest version is 1.8.0-rc1 and the script detects it as 1.8.0 which doesn't exist. It works great btw.

@grillazz

This comment has been minimized.

Copy link

grillazz commented Jul 6, 2016

Thanks for script.

@emanuellarini

This comment has been minimized.

Copy link

emanuellarini commented Jul 17, 2016

Nice script! Made my day!

@raulsenaferreira

This comment has been minimized.

Copy link

raulsenaferreira commented Aug 12, 2016

Thanks for script. It saved hours of my time.

@wdullaer

This comment has been minimized.

Copy link
Owner Author

wdullaer commented Aug 24, 2016

@luislobo that's a neat trick, I'll put that in here as well

@Jarzka

This comment has been minimized.

Copy link

Jarzka commented Sep 11, 2016

I wonder why there is no easier way than searching a custom script from GitHub to install the latest version of Docker Compose...

@wting

This comment has been minimized.

Copy link

wting commented Sep 13, 2016

FYI I've found docker-gc a more robust substitute for docker-cleanup.

@thuannvn

This comment has been minimized.

Copy link

thuannvn commented Sep 19, 2016

curl -sSL https://get.docker.com/ | sudo bash

@ivorscott

This comment has been minimized.

Copy link

ivorscott commented Oct 8, 2016

@Jarzka because its bleeding edge

@devilrancy

This comment has been minimized.

Copy link

devilrancy commented Dec 20, 2016

Thank you buddy for this script.

@xtdwps

This comment has been minimized.

Copy link

xtdwps commented Jan 25, 2017

Regular expression for latest docker-compose releases (X.XX.X) should be fixed like:
"[0-9]+\.[0-9][0-9]+\.[0-9]+$"

@wdullaer

This comment has been minimized.

Copy link
Owner Author

wdullaer commented Mar 3, 2017

@xtdwps thanks, updated

@DerekRoberts

This comment has been minimized.

Copy link

DerekRoberts commented Mar 4, 2017

That regex requires two digits in the centre position. Here's a more flexible solution, but it's a mess. Anything better?

LIST=$( git ls-remote https://github.com/docker/compose | grep "refs/tags" | grep -oP "[0-9]+(\.[0-9]+)+$" )
VERSION=""
while [ $( echo "${LIST}" | wc -l ) -gt 1 ]
do
    DIGIT=$( echo "${LIST}" | grep -oP "^[0-9]+" | sort -g | tail -n 1 )
    VERSION="${VERSION}"."${DIGIT}"
    LIST=$( echo "${LIST}" | sed -e "/^${DIGIT}/!d" -e "s/^${DIGIT}.//" )
done
VERSION=$( echo "${VERSION}" | sed "s/^\.//" )
@felipebizz

This comment has been minimized.

Copy link

felipebizz commented Mar 10, 2017

Thanks a lot!

@patocardo

This comment has been minimized.

Copy link

patocardo commented Apr 12, 2017

¡¡Thank you very, very much!!

@MohamedHegab

This comment has been minimized.

Copy link

MohamedHegab commented Apr 24, 2017

Thanks for this great script 👍

@n0ts

This comment has been minimized.

Copy link

n0ts commented Apr 26, 2017

Hi, I write a more simple script.

VERSION=$(curl -s -o /dev/null -I -w "%{redirect_url}\n" https://github.com/docker/compose/releases/latest | grep -oP "[0-9]+(\.[0-9]+)+$")
curl -L https://github.com/docker/compose/releases/download/$COMPOSE_VER/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
@rachelcarmena

This comment has been minimized.

Copy link

rachelcarmena commented May 18, 2017

Thanks @n0ts!

There is an small typo:
COMPOSE_VER=$(curl -s -o /dev/null -I -w "%{redirect_url}\n" https://github.com/docker/compose/releases/latest | grep -oP "[0-9]+(\.[0-9]+)+$")

and second command could be:

curl -o /usr/local/bin/docker-compose -L https://github.com/docker/compose/releases/download/$COMPOSE_VER/docker-compose-$(uname -s)-$(uname -m)

I hope it's useful!

@EgorOmelyanenko

This comment has been minimized.

Copy link

EgorOmelyanenko commented Jul 24, 2017

Thank you very much!

@alexanderadam

This comment has been minimized.

Copy link

alexanderadam commented Jul 27, 2017

As the current installation process of docker compose is pretty creepy you may be interested in these issues: 2235 and 24210.
But at least there's a Docker / Moby PPA for Docker / Moby itself…

@natgho-reidin

This comment has been minimized.

Copy link

natgho-reidin commented Aug 1, 2017

@madtechsupport here;

#!/bin/bash

# Uninstall Script

if [ "${USER}" != "root" ]; then
    echo "$0 must be run as root!"
    exit 2
fi

while true; do
  read -p "Remove all Docker Machine VMs? (Y/N): " yn
  case $yn in
    [Yy]* ) docker-machine rm -f $(docker-machine ls -q); break;;
    [Nn]* ) break;;
    * ) echo "Please answer yes or no."; exit 1;;
  esac
done

echo "Removing Applications..."
rm -rf /Applications/Docker

echo "Removing docker binaries..."
rm -f /usr/local/bin/docker
rm -f /usr/local/bin/docker-machine
rm -r /usr/local/bin/docker-machine-driver*
rm -f /usr/local/bin/docker-compose

echo "Removing boot2docker.iso"
rm -rf /usr/local/share/boot2docker

echo "All Done!"
@joeyhub

This comment has been minimized.

Copy link

joeyhub commented Aug 25, 2017

This is not a recommended way to install if it you can avoid it. If you want to install it on debian you should package it into a deb. You can look at the source deb for it and try to up date that. The project might also contain a build script for deb somewhere.

@cpeeyush

This comment has been minimized.

Copy link

cpeeyush commented Aug 29, 2017

Awesome Thanks.

@komputronika

This comment has been minimized.

Copy link

komputronika commented Sep 11, 2017

Thanks for this script 👍

@Nihamavasa

This comment has been minimized.

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" https://github.com/docker/compose/releases/latest | grep -oP "[0-9]+(\.[0-9]+)+$")
&&
curl -o $(which docker-compose) -L https://github.com/docker/compose/releases/download/$COMPOSE_VER/docker-compose-$(uname -s)-$(uname -m)
Just if there allready is a docker-compose binary
But this is not fully tested.

@chiluap

This comment has been minimized.

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;}

@andersonpem

This comment has been minimized.

Copy link

andersonpem commented Nov 1, 2018

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

@jseguillon

This comment has been minimized.

Copy link

jseguillon commented Jan 9, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.