Skip to main content

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 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

-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

 


Comments

Popular posts from this blog

Terraform

Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions. Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied. The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc. The key features of Terraform are: Infrastructure as Code : Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and

Java 8 coding challenge: Roy and Profile Picture

Problem:  Roy wants to change his profile picture on Facebook. Now Facebook has some restriction over the dimension of picture that we can upload. Minimum dimension of the picture can be  L x L , where  L  is the length of the side of square. Now Roy has  N  photos of various dimensions. Dimension of a photo is denoted as  W x H where  W  - width of the photo and  H  - Height of the photo When any photo is uploaded following events may occur: [1] If any of the width or height is less than L, user is prompted to upload another one. Print " UPLOAD ANOTHER " in this case. [2] If width and height, both are large enough and (a) if the photo is already square then it is accepted. Print " ACCEPTED " in this case. (b) else user is prompted to crop it. Print " CROP IT " in this case. (quotes are only for clarification) Given L, N, W and H as input, print appropriate text as output. Input: First line contains  L . Second line contains  N , number of

Salt stack issues

The function “state.apply” is running as PID Restart salt-minion with command:  service salt-minion restart No matching sls found for ‘init’ in env ‘base’ Add top.sls file in the directory where your main sls file is present. Create the file as follows: 1 2 3 base: 'web*' : - apache If the sls is present in a subdirectory elasticsearch/init.sls then write the top.sls as: 1 2 3 base: '*' : - elasticsearch.init How to execute saltstack-formulas create file  /srv/pillar/top.sls  with content: base : ' * ' : - salt create file  /srv/pillar/salt.sls  with content: salt : master : worker_threads : 2 fileserver_backend : - roots - git gitfs_remotes : - git://github.com/saltstack-formulas/epel-formula.git - git://github.com/saltstack-formulas/git-formula.git - git://github.com/saltstack-formulas/nano-formula.git - git://github.com/saltstack-f