Installation
[On Ubuntu 14.04] Installation:
sudo apt-get update sudo apt-get install -y docker.io sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
Last version installation:
wget -qO- https://get.docker.io/gpg | sudo apt-key add - sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" sudo apt-get update sudo apt-get install lxc-docker -y
Removing sudo for commands
I order to avoid ‘sudo’ prefix in all docker commands, here I write a tip for removing sudo from all Docker commands:
# Add the docker group sudo groupadd docker # Add the connected user "${USERNAME}" to the docker group. sudo gpasswd -a ${USERNAME} docker # Logout/Login with this user for changes to take effect # Restart the docker daemon. sudo service docker.io restart
Run your first container
Docker Hub is the big repo of images. You can login by ‘docker login’
Download image and run container console:
docker run -t -i ubuntu:14.04 /bin/bash root@af8bae53bdd3:/# pwd / root@af8bae53bdd3:/# exit
Basic operations
Operations with Containers:
- ‘docker ps [-a] CONTAINER’ containers running (-a shows all including stopped)
- ‘docker logs -f CONTAINER’ container standard output
- ‘docker top CONTAINER’ container processes running list
- ‘docker inspect CONTAINER’ container low level json report
- ‘docker stop CONTAINER’ stops the container
- ‘docker start CONTAINER’ restarts a container previously stopped
- ‘docker rm [-f] CONTAINER’ removes definitely a container previously stopped. ‘docker rm -f $(docker ps -a -q)’ removes all containers.
Operations with images:
- ‘docker images’ list images in workstation
- ‘docker search TERM’ search images (look at Docker Hub)
- ‘docker tag [ID] [NAME]:[TAG]’ tags an image
- ‘docker push [NAME]’ upload image to Docker.hub
- ‘docker rmi [NAME]’ locally removes an image
Create an Image
mkdir ubuntu-chef cd ubuntu-chef touch Dockerfile
And write it:
# Ubuntu + chef-solo FROM ubuntu:14.04 MAINTAINER Juan Lebrijo "juan@lebrijo.com" RUN apt-get -y update RUN apt-get -y install curl build-essential libxml2-dev libxslt-dev git RUN curl -L https://www.opscode.com/chef/install.sh | bash
Operations with Chef:
- ‘docker build -t jlebrijo/ubuntu-chef .’ creates an image
- docker run -d -m 8g –cpuset 0-7 –name rails_stack -p 2222:22 -i jlebrijo/trusty-chef
- knife solo cook root@localhost -p 2222
- ssh root@localhost -p 2222
Tricks
- Stopping all containers: docker stop $(docker ps -a -q)
- Removing all containers: docker rm $(docker ps -a -q)
Exposing a port on a live container
You need to create an image from your container and restart the container based on this image:
docker stop www docker commit www www-image docker rm www docker run --detach=true --name www -p 2222:22 -p 80:80 -p 443:443 -p 9292:9292 www-image docker rm www-image
Great tutorial for getting started with containers. Also have a look at this ebook for learning about docker concepts, deployment and orchestration tools.
goo.gl/qlgCVj
I know; but lately I have been so lazy that I just use the coolnse to compile something or when something crashes. Even updates are installed automatically. From your comment I just realized: why not program cron to do it.Besides that, I just realize how this technique can be useful when we need to format that same PC.Cheers
Way to put the nail in the coffin, M. Night.To be totally honest, I like The Sixth Sense and even Signs. And I think he does have some talent. But the guy needs to learn from the criticism and quit taking himself so damn seriously. And maybe collaborate with someone who’ll tell him when he’s being ridiculous.And not direct something with a creepy vampire fetus/werewolf love connection. I mean, really? Really?