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 docker.io —will display a list of packages containing docker
apt-chache show docker.io —- will display all details of packaage
Check if it is latest version.
Docker guys have provided us with a script get.docker.com. it has the script for installation.
This is to be executed .
wget -qO- https://get.docker.com/ | 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 hub.docker.com
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
-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