| #!/usr/bin/env bash |
| |
| # **install_docker.sh** - Do the initial Docker installation and configuration |
| |
| # install_docker.sh |
| # |
| # Install docker package and images |
| # * downloads a base busybox image and a glance registry image if necessary |
| # * install the images in Docker's image cache |
| |
| |
| # Keep track of the current directory |
| SCRIPT_DIR=$(cd $(dirname "$0") && pwd) |
| TOP_DIR=$(cd $SCRIPT_DIR/../..; pwd) |
| |
| # Import common functions |
| source $TOP_DIR/functions |
| |
| # Load local configuration |
| source $TOP_DIR/stackrc |
| |
| FILES=$TOP_DIR/files |
| |
| # Get our defaults |
| source $TOP_DIR/lib/nova_plugins/hypervisor-docker |
| |
| SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60} |
| |
| |
| # Install Docker Service |
| # ====================== |
| |
| # Stop the auto-repo updates and do it when required here |
| NO_UPDATE_REPOS=True |
| |
| # Set up home repo |
| curl https://get.docker.io/gpg | sudo apt-key add - |
| install_package python-software-properties && \ |
| sudo sh -c "echo deb $DOCKER_APT_REPO docker main > /etc/apt/sources.list.d/docker.list" |
| apt_get update |
| install_package --force-yes lxc-docker=${DOCKER_PACKAGE_VERSION} socat |
| |
| # Start the daemon - restart just in case the package ever auto-starts... |
| restart_service docker |
| |
| echo "Waiting for docker daemon to start..." |
| DOCKER_GROUP=$(groups | cut -d' ' -f1) |
| CONFIGURE_CMD="while ! /bin/echo -e 'GET /v1.3/version HTTP/1.0\n\n' | socat - unix-connect:$DOCKER_UNIX_SOCKET | grep -q '200 OK'; do |
| # Set the right group on docker unix socket before retrying |
| sudo chgrp $DOCKER_GROUP $DOCKER_UNIX_SOCKET |
| sudo chmod g+rw $DOCKER_UNIX_SOCKET |
| sleep 1 |
| done" |
| if ! timeout $SERVICE_TIMEOUT sh -c "$CONFIGURE_CMD"; then |
| die $LINENO "docker did not start" |
| fi |
| |
| |
| # Get Docker image |
| if [[ ! -r $FILES/docker-ut.tar.gz ]]; then |
| (cd $FILES; curl -OR $DOCKER_IMAGE) |
| fi |
| if [[ ! -r $FILES/docker-ut.tar.gz ]]; then |
| die $LINENO "Docker image unavailable" |
| fi |
| docker import - $DOCKER_IMAGE_NAME <$FILES/docker-ut.tar.gz |
| |
| # Get Docker registry image |
| if [[ ! -r $FILES/docker-registry.tar.gz ]]; then |
| (cd $FILES; curl -OR $DOCKER_REGISTRY_IMAGE) |
| fi |
| if [[ ! -r $FILES/docker-registry.tar.gz ]]; then |
| die $LINENO "Docker registry image unavailable" |
| fi |
| docker import - $DOCKER_REGISTRY_IMAGE_NAME <$FILES/docker-registry.tar.gz |