diff --git a/contrib/install.sh b/contrib/install.sh deleted file mode 100755 index 40e3aaafb4..0000000000 --- a/contrib/install.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -# This script is meant for quick & easy install via 'curl URL-OF-SCRIPT | sh' -# Original version by Jeff Lindsay -# Revamped by Jerome Petazzoni -# -# This script canonical location is https://get.docker.io/; to update it, run: -# s3cmd put -m text/x-shellscript -P install.sh s3://get.docker.io/index - -echo "Ensuring basic dependencies are installed..." -apt-get -qq update -apt-get -qq install lxc wget - -echo "Looking in /proc/filesystems to see if we have AUFS support..." -if grep -q aufs /proc/filesystems -then - echo "Found." -else - echo "Ahem, it looks like the current kernel does not support AUFS." - echo "Let's see if we can load the AUFS module with modprobe..." - if modprobe aufs - then - echo "Module loaded." - else - echo "Ahem, things didn't turn out as expected." - KPKG=linux-image-extra-$(uname -r) - echo "Trying to install $KPKG..." - if apt-get -qq install $KPKG - then - echo "Installed." - else - echo "Oops, we couldn't install the -extra kernel." - echo "Are you sure you are running a supported version of Ubuntu?" - echo "Proceeding anyway, but Docker will probably NOT WORK!" - fi - fi -fi - -echo "Downloading docker binary to /usr/local/bin..." -curl -s https://get.docker.io/builds/$(uname -s)/$(uname -m)/docker-latest \ - > /usr/local/bin/docker -chmod +x /usr/local/bin/docker - -if [ -f /etc/init/dockerd.conf ] -then - echo "Upstart script already exists." -else - echo "Creating /etc/init/dockerd.conf..." - cat >/etc/init/dockerd.conf < /dev/null - -echo "Done." -echo diff --git a/docs/sources/installation/amazon.rst b/docs/sources/installation/amazon.rst index 2c74b0fc32..c6c8104321 100644 --- a/docs/sources/installation/amazon.rst +++ b/docs/sources/installation/amazon.rst @@ -44,10 +44,10 @@ Security Group to allow SSH.** By default all incoming ports to your new instance will be blocked by the AWS Security Group, so you might just get timeouts when you try to connect. -Installing with ``get.docker.io`` (as above) will create a service -named ``dockerd``. You may want to set up a :ref:`docker group -` and add the *ubuntu* user to it so that you don't have -to use ``sudo`` for every Docker command. +Installing with ``get.docker.io`` (as above) will create a service named +``lxc-docker``. It will also set up a :ref:`docker group ` and you +may want to add the *ubuntu* user to it so that you don't have to use ``sudo`` +for every Docker command. Once you've got Docker installed, you're ready to try it out -- head on over to the :doc:`../use/basics` or :doc:`../examples/index` section. diff --git a/hack/install.sh b/hack/install.sh new file mode 100755 index 0000000000..e184a87361 --- /dev/null +++ b/hack/install.sh @@ -0,0 +1,136 @@ +#!/bin/sh +set -e +# +# This script is meant for quick & easy install via: +# 'curl -sL https://get.docker.io/ | sh' +# or: +# 'wget -qO- https://get.docker.io/ | sh' +# +# +# Docker Maintainers: +# To update this script on https://get.docker.io, +# use hack/release.sh during a normal release, +# or the following one-liner for script hotfixes: +# s3cmd put --acl-public -P hack/install.sh s3://get.docker.io/index +# + +url='https://get.docker.io/' + +command_exists() { + command -v "$@" > /dev/null 2>&1 +} + +case "$(uname -m)" in + *64) + ;; + *) + echo >&2 'Error: you are not using a 64bit platform.' + echo >&2 'Docker currently only supports 64bit platforms.' + exit 1 + ;; +esac + +if command_exists docker || command_exists lxc-docker; then + echo >&2 'Warning: "docker" or "lxc-docker" command appears to already exist.' + echo >&2 'Please ensure that you do not already have docker installed.' + echo >&2 'You may press Ctrl+C now to abort this process and rectify this situation.' + ( set -x; sleep 20 ) +fi + +sh_c='sh -c' +if [ "$(whoami 2>/dev/null || true)" != 'root' ]; then + if command_exists sudo; then + sh_c='sudo sh -c' + elif command_exists su; then + sh_c='su -c' + else + echo >&2 'Error: this installer needs the ability to run commands as root.' + echo >&2 'We are unable to find either "sudo" or "su" available to make this happen.' + exit 1 + fi +fi + +curl='' +if command_exists curl; then + curl='curl -sL' +elif command_exists wget; then + curl='wget -qO-' +elif command_exists busybox && busybox --list-modules | grep -q wget; then + curl='busybox wget -qO-' +fi + +# perform some very rudimentary platform detection +lsb_dist='' +if command_exists lsb_release; then + lsb_dist="$(lsb_release -si)" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then + lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then + lsb_dist='Debian' +fi + +case "$lsb_dist" in + Ubuntu|Debian) + export DEBIAN_FRONTEND=noninteractive + + # TODO remove this comment/section once device-mapper lands + echo 'Warning: Docker currently requires AUFS support in the kernel.' + echo 'Please ensure that your kernel includes such support.' + ( set -x; sleep 10 ) + + if [ ! -e /usr/lib/apt/methods/https ]; then + ( set -x; $sh_c 'sleep 3; apt-get update; apt-get install -y -q apt-transport-https' ) + fi + if [ -z "$curl" ]; then + ( set -x; $sh_c 'sleep 3; apt-get update; apt-get install -y -q curl' ) + curl='curl -sL' + fi + ( + set -x + $sh_c "$curl ${url}gpg | apt-key add -" + $sh_c "echo deb ${url}ubuntu docker main > /etc/apt/sources.list.d/docker.list" + $sh_c 'sleep 3; apt-get update; apt-get install -y -q lxc-docker' + ) + if command_exists docker && [ -e /var/run/docker.sock ]; then + ( + set -x + $sh_c 'docker run busybox echo "Docker has been successfully installed!"' + ) + fi + exit 0 + ;; + + Gentoo) + if [ "$url" = "https://test.docker.io/" ]; then + echo >&2 + echo >&2 ' You appear to be trying to install the latest nightly build in Gentoo.' + echo >&2 ' The portage tree should contain the latest stable release of Docker, but' + echo >&2 ' if you want something more recent, you can always use the live ebuild' + echo >&2 ' provided in the "docker" overlay available via layman. For more' + echo >&2 ' instructions, please see the following URL:' + echo >&2 ' https://github.com/tianon/docker-overlay#using-this-overlay' + echo >&2 ' After adding the "docker" overlay, you should be able to:' + echo >&2 ' emerge -av =app-emulation/docker-9999' + echo >&2 + exit 1 + fi + + ( + set -x + $sh_c 'sleep 3; emerge app-emulation/docker' + ) + exit 0 + ;; +esac + +echo >&2 +echo >&2 ' Either your platform is not easily detectable, is not supported by this' +echo >&2 ' installer script (yet - PRs welcome!), or does not yet have a package for' +echo >&2 ' Docker. Please visit the following URL for more detailed installation' +echo >&2 ' instructions:' +echo >&2 +echo >&2 ' http://docs.docker.io/en/latest/installation/' +echo >&2 +exit 1 diff --git a/hack/release.sh b/hack/release.sh index 237b5fb903..12ad27dce3 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -67,7 +67,14 @@ write_to_s3() { } s3_url() { - echo "http://$BUCKET.s3.amazonaws.com" + case "$BUCKET" in + get.docker.io|test.docker.io) + echo "https://$BUCKET" + ;; + *) + echo "http://$BUCKET.s3.amazonaws.com" + ;; + esac } # Upload the 'ubuntu' bundle to S3: @@ -125,13 +132,13 @@ EOF s3cmd --acl-public sync $APTDIR/ s3://$BUCKET/ubuntu/ cat < /etc/apt/sources.list.d/docker.list +echo deb $(s3_url)/ubuntu docker main > /etc/apt/sources.list.d/docker.list # Then import the repository key -curl $(s3_url $BUCKET)/gpg | apt-key add - +curl $(s3_url)/gpg | apt-key add - # Install docker apt-get update ; apt-get install -y lxc-docker EOF - echo "APT repository uploaded. Instructions available at $(s3_url $BUCKET)/ubuntu/info" + echo "APT repository uploaded. Instructions available at $(s3_url)/ubuntu/info" } # Upload a static binary to S3 @@ -141,7 +148,7 @@ release_binary() { s3cmd --acl-public put bundles/$VERSION/binary/docker-$VERSION $S3DIR/docker-$VERSION cat <