Skip to content

Instantly share code, notes, and snippets.

@SalahAdDin
Last active January 16, 2018 16:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SalahAdDin/b85fa343d6f8f5b2ad6c359045ff298d to your computer and use it in GitHub Desktop.
Save SalahAdDin/b85fa343d6f8f5b2ad6c359045ff298d to your computer and use it in GitHub Desktop.
Supply EC2 instances for works with Docker

NOTE: For install all docker: curl -sSL https://get.docker.com | sh.

  1. Update the system and prepare requirements:
    $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
    $ sudo apt-get update && sudo apt-get upgrade && sudo apt-get install apt-transport-https ca-certificates git  
    $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. Open next file and clean it:
    $ sudo nano /etc/apt/sources.list.d/docker.list
  2. Add proper source list, in this case Ubuntu 16.04 server, save and close:
    $ deb https://apt.dockerproject.org/repo ubuntu-xenial main
  3. Update, clean, review and install:
    $ sudo apt-get update && sudo apt-get install -y build-essential && sudo apt-get install -y nodejs && sudo apt-get purge lxc-docker && apt-cache policy docker-engine && sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual && sudo apt-get install docker-engine && sudo apt-get install cmake
  4. Enable Docker Service:
    $ sudo service docker start && sudo systemctl enable docker
  5. Create Docker Group:
    $ sudo usermod -aG docker $USER && sudo service docker restart
  6. Login in super user bash:
    $ sudo su
  7. Install Docker Machine:
   $ curl -L https://github.com/docker/machine/releases/download/v0.11.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
  chmod +x /tmp/docker-machine &&
  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
  1. Install Docker Compose:
    $ curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    $ chmod +x /usr/local/bin/docker-compose
  1. Add bash completions:
    $ curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose  
    $ curl -L https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash > /etc/bash_completion.d/docker-machine  
    $ curl -L https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash > /etc/bash_completion.d/docker-machine-wrapper  
    $ curl -L https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash > /etc/bash_completion.d/docker-machine-prompt  
  1. Create a docker machine, clone your repository, place inside it and compose your docker images.
    Optional: Update Docker Machine.
    a. $ docker-machine ssh {$docker-machine name}
    b. $ sudo apt-get update && sudo apt-get upgrade
@SalahAdDin
Copy link
Author

SalahAdDin commented Oct 7, 2016

Tips:

  • Get super user access in docker container: docker exec -u 0 -it {container} bash or docker exec -it -u root jenkins /bin/bash

@SalahAdDin
Copy link
Author

SalahAdDin commented Apr 12, 2017

Clean docker images:

#!/bin/bash

# Delete all stopped containers
docker rm $( docker ps -q -f status=exited)
# Delete all dangling (unused) images
docker rmi $( docker images -q -f dangling=true)

xargs with --no-run-if-empty is even better as it does cleanly handle the case when there is nothing to be removed.

#!/bin/bash

# Delete all stopped containers
docker ps -q -f status=exited | xargs --no-run-if-empty docker rm
# Delete all dangling (unused) images
docker images -q -f dangling=true | xargs --no-run-if-empty docker rmi

@SalahAdDin
Copy link
Author

SalahAdDin commented Apr 27, 2017

Update docker-compose and docker-machine:

  • Optional for compose, obligated for machine:
# Remove old version.
 rm $(which docker-compose)
pip uninstall docker-compose

 rm $(which docker-machine)

Update machine:

$ curl -L https://github.com/docker/machine/releases/download/v0.11.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
  chmod +x /tmp/docker-machine &&
  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

Update compose:

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

or

sudo sudo pip install docker-compose

Enable bash completions:

To install the scripts, copy or link them into your /etc/bash_completion.d or /usr/local/etc/bash_completion.d directory. To enable the docker-machine shell prompt, add $(__docker_machine_ps1) to your PS1 setting in ~/.bashrc.

PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '

@SalahAdDin
Copy link
Author

Creating a new machine with virtualbox:

docker-machine create dev 
docker-machine env dev
eval $(docker-machine env dev)

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