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.

madtechsupport commented Feb 2, 2015

Hi, who wrote the docker-cleanup script?

@Lujaw

This comment has been minimized.

Lujaw commented Feb 2, 2015

thanks for the script..

@wdullaer

This comment has been minimized.

Owner

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.

victor95pc commented May 18, 2015

Thx man, it solves all my problems!

@jherax

This comment has been minimized.

jherax commented Sep 20, 2015

Marvelous +1

@jamesmstone

This comment has been minimized.

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.

anand9 commented Oct 12, 2015

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

@were-oyomno

This comment has been minimized.

were-oyomno commented Oct 17, 2015

thx mate, neat stuff!

@neomatrix369

This comment has been minimized.

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.

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.

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.

grillazz commented Jul 6, 2016

Thanks for script.

@emanuellarini

This comment has been minimized.

emanuellarini commented Jul 17, 2016

Nice script! Made my day!

@raulsenaferreira

This comment has been minimized.

raulsenaferreira commented Aug 12, 2016

Thanks for script. It saved hours of my time.

@wdullaer

This comment has been minimized.

Owner

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.

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.

wting commented Sep 13, 2016

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

@thuannvn

This comment has been minimized.

thuannvn commented Sep 19, 2016

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

@ivorscott

This comment has been minimized.

ivorscott commented Oct 8, 2016

@Jarzka because its bleeding edge

@devilrancy

This comment has been minimized.

devilrancy commented Dec 20, 2016

Thank you buddy for this script.

@xtdwps

This comment has been minimized.

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.

Owner

wdullaer commented Mar 3, 2017

@xtdwps thanks, updated

@DerekRoberts

This comment has been minimized.

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.

felipebizz commented Mar 10, 2017

Thanks a lot!

@patocardo

This comment has been minimized.

patocardo commented Apr 12, 2017

¡¡Thank you very, very much!!

@MohamedHegab

This comment has been minimized.

MohamedHegab commented Apr 24, 2017

Thanks for this great script 👍

@n0ts

This comment has been minimized.

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.

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.

EgorOmelyanenko commented Jul 24, 2017

Thank you very much!

@alexanderadam

This comment has been minimized.

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.

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.

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.

cpeeyush commented Aug 29, 2017

Awesome Thanks.

@komputronika

This comment has been minimized.

komputronika commented Sep 11, 2017

Thanks for this script 👍

@Nihamavasa

This comment has been minimized.

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.

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.

andersonpem commented Nov 1, 2018

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

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