Docker Part 1

currently with docker you are limited to only linux machines and apps. It is like installing various zip files on your os.

because of the use of base image we can save space.All the containers use the same base image. If you want 100 containers in traditional vm env you would have needed 100GB space considering 1gb per image but with docker you will need only 1gb of space. Suppose if you need emacs and apache then docker will add to separate images for it on top of each other and with the base image it will form a union image. this image is readonly so to write in it docker will place a writable container and the whole set container:image(apache)+image(emacs)+base image will make a whole container in the docker.  But the writable container is not persistent. Docker boots the image/ image layers on top f each other.

apt-cache search —will display a list of packages containing docker

apt-chache show —- will display all details of packaage

Check if it is latest version.

Docker guys have provided us with a script it has the script for installation.

This is to be executed .

wget -qO- | sh to install docker latest.

If you want to add non root user in docker then execute the following command:

sudo usermod -aG docker your-user

check by id your-user to check in which group  user is present it should be present in docker group.

all images are present in registry. docker own registry at docker hub. first you will need to pull the docker images from the registry with docker pull command. After that you can use docker run. If you have specified which images to use then docker will automatically pull the images from registry while docker run is executed. the registry of docker is

You can search using docker search mysql

to download use docker pull ubuntu

always pull the latest you can also use docker pull ubuntu:latest it is same. :latest is called image tag or the container tag. you can pull using version as well: docker pull ubuntu:14.04

To check what images you have you can issue the docker images command

To start a container use

docker run -ti ubuntu:14.04 /bin/bash -t for terminal i for interactive

to quit container without stopping it press CTRL+P+Q

to check which docker containers are running then command docker ps

to attach to running container use command docker attach <container id>/<container name>

To exit docker and stop the container as well press CTRL+D

To list all the containers even the which that are not running use command docker ps -a

If you exit with ctrl + d and want to start the container again then you can use the command docker start <container-name> 

This will start container in the background

To display docker processes use command docker top / docker top <container-name>

to stop use docker stop <container-name>

in /var/lib there is a folder docker. in that you will have folder container in that you can see folders of running containers with their long ids. In that folders you can see the following files:

<id>-json.log, hosts, config.json, resolv.json, hostconfig.json, resolv.conf.hash, hostname.

In hostname file you will have the short id of container which is shorter version of the long id.

you can also run docker run -ti ubuntu:12.04 /bin/bash it will download automatically.

If you dont want to immediately attach to the container then you can run docker in detached mode:

docker run -d -ti ubuntu:14.04 –name=duck /bin/bash

-d for detached

-ti also because if you dont give you wont be able to login into it.

But it is not persistant if you want the docker container to be persistent then you can use the command:

docker run -ti -v /data –name=duck2 ubuntu:14.04 /bin/bash

-v for volume you have to give it a mount point it will create this mount point inside the container folder.

name should not be same as previous

When in bash inside the container goto /dataand then start working and creat files.

then after quiting the container with ctrl+p+q then in your local machine goto /var/lib/volumes/<container-long-id>/_data you can find all your files here.

If you remove from inside container it will be removed from local machine as well

If you want to attach local directory to continer then

docker run -ti -v /srv/duck3:/data –name=duck3 ubuntu:14.04 /bin/bash

/srv/duck3 local dir

/data container dir

docker run -d -p 3306 -ti mysql /bin/bash

-p for port

this will open port 3306 and nat it to external port.

you check by this command locally iptables -L -t nat

-L list

-t for table nat

it will nat to random port if want to pen specific port

docker run -d -ti -p 3306:3306 mysql /bin/bash

you can also specify the specific ip address if you want with -p <ip>:3306:3306



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s