Docker
Docker container Vs Virtual Machine
Docker Architecture:
Workflow:
Basic Concepts
- Registry
- Repository
- Tag
- Image
- Containers.
Registry/ Repository: https://hub.docker.com is a public registry and it contains many repositories.
For Eg: https://hub.docker.com/r/in28min/todo-rest-api-h2 (Highlighted one is the repository).
Tags:
In the repository, there will a different versions of an image.
For Eg: docker run in28min/todo-rest-api-h2:1.0.0.RELEASE
Image: A static template - A set of bytes
Container: Running version of your image
==========================================================================
Install docker: https://docs.docker.com/desktop/
==========================================================================
Docker commands
Run a docker image :
docker run -p 5000:5000 in28min/todo-rest-api-h2:1.0.0.RELEASE
-p 5000:5000 => {host port} : {container port}
if the image is not available in local, it will pull from repository
Detached mode (-d):
To run the container in the background. The below command will return the container id.
docker run -p 5000:5000 -d in28min/todo-rest-api-h2:1.0.0.RELEASE
To check the logs of the container running in the background (-f is to tail the log),
docker logs <container-id>
docker logs -f <container-id>
list the running Containers:
docker container ls
list all the containers: (Both running & Exited)
docker container ls -a
Image related commands
List docker images:
docker images
Stop the container:
docker container stop <Container id>
Adding Tag:
docker tag <image>:tag1 <image>:tag2
Eg: docker tag in28min/todo-rest-api-h2:1.0.0.RELEASE in28min/todo-rest-api-h2:latest
Pull image:
Just to download the image from the registry. it won't run.
docker pull <image>:tag name
Eg: docker pull mysql
- If the tag name is not provided, it will pull the latest.
Search images from repo:
docker search mysql
- Make sure you are downloading official images
Image History:
This will show all the steps involved in creating docker image
docker image history <image Id>
inspect image:
it will show the tags, env variable, container config, entry point and etc
docker image inspect <image id>
Remove image:
docker image remove <image id>
- removes the image from local, not from the repository.
Container related commands
Run a Container:
docker container run -p 5000:5000 -d <image>: <tag>
Pause/Un pause a container:
docker container pause <Container id>
docker container unpause <Container id>
Inspect container:
docker container inspect <container id>
remove stopped container:
docker container prune
Stop container: - graceful shuddown
docker container stop <container id>
Restart Container:
docker restart <container id>
kill a container: - Immediately terminates the process
docker container kill <container id>
Restart Policy:
docker run -p 5000:5000 -d --restart=always in28min/todo-rest-api-h2:1.0.0.RELEASE
Events:
docker events
Top Process:
docker top <container id>
Stats:
- to see CPU/MEM usage and etc
docker stats
Docker run with CPU and MEM value:
docker run -p 5000:5000 -d -m 512m --cpu-quota 50000 in28min/todo-rest-api-h2:1.0.0.RELEASE
system df:
- to view what are the resources managed by the docker deamon.
docker system df
To go into the container:
docker exec -it <containerid> bash
Creating a Docker File
#This is a sample Image FROM ubuntu MAINTAINER test@gmail.com RUN apt-get update RUN apt-get install –y nginx CMD [“echo”,”Image created”]
- The first line "#This is a sample Image" is a comment
- The next line has to start with the FROM keyword. It tells docker, from which base image you want to base your image from. In our example, we are creating an image from the ubuntu image.
- MAINTAINER keyword and just mention the email ID
- The RUN command is used to run instructions against the image. In our case, we first update our Ubuntu system and then install the nginx server on our ubuntu image.
- The last command is used to display a message to the user.
Build the Docker File:
docker build
docker build -t ImageName:TagName dir
-t − is to mention a tag to the image
ImageName − This is the name you want to give to your image.
TagName − This is the tag you want to give to your image.
Dir − The directory where the Docker File is present.
Creating Docker-Compose File
sudo vim docker-compose.yml
The database and web keyword are used to define two separate services. One will be running our mysql database and the other will be our nginx web server.
The image keyword is used to specify the image from dockerhub for our mysql and nginx containers
For the database, we are using the ports keyword to mention the ports that need to be exposed for mysql.
And then, we also specify the environment variables for mysql which are required to run mysql.
sudo ./docker-compose up
Comments
Post a Comment