Docker basics: Containers
So we have just created a docker image and now it’s time for us to run a container and interact with it.
docker run nginx
This will run an nginx image and as we can see due to running the container in an interactive mode the terminal we issued the command is no longer available.
We will press ctrl-c. By doing so the docker process exists and our container is no longer running. Our container lifecycle is bound to the main process. If the process exits the container stops.
So let’s run our container in the detached mode and interact with it
docker run -d nginx
The minus -d option makes the container to run in a detached mode.
Now let’s have a look on our running containers
docker ps
Only one container is listed. The ps command by default show only the running containers. The ps command gives us various information such as when the container was created, the status of the container and the image which was created.
If we want to see our previously stopped container all we have to do is to execute ps with the -a option
docker ps -a
We can remove a container either after stopping the container or we can specify the container to get removed automatically once the container is stopped.
docker run --rm -d nginx
Otherwise in order to remove a container we just have to issue the rm command
docker rm {container-id|container-name}
Be aware that in order to delete a container, the container must be stopped. Otherwise you must use the -f argument which forces the container to stop and gets deleted.
In order to stop the container issue
docker stop {container-id|container-name}
As we can see we can remove a container by specifying it’s name. In the previous examples we did not any names so let’s do it now.
We can set a name by either renaming a running container
docker rename 53552a9f0a95 my-nginx
Or we can specify the name of the container while we create it.
docker run --name='my-nginx' -d nginx
Now that we have only one container the ps command serves us well, however in cases where we run multiple containers we need to apply the filter argument which comes along with the ps command.
You can filter by the id, name, label, status etc.
Also you can use filter with substrings in case of name.
docker ps --filter=name="nginx"
So everything is set for us. As we have seen running a container in a detached state does not display any logs in the console. To get the logs we can use the logs command.
docker logs my-nginx
If we want to follow the logs we can also follow the output
docker logs -f my-nginx
The next step is to get into interactive mode with our container while it is running
docker run --rm --name='my-nginx' -it nginx /bin/bash
with this command our container is running and we are logged in to the containers bash console. Be aware that in cases where an entrypoint has been specified you need to override it.
docker run -it --entrypoint "/bin/bash" {image}
However still we might need some extra commands to be run. One way to do this is to use
the docker exec command
docker exec my-nginx echo 'hello wolrd'
As you see we specified the container name and the bash command to execute.
So most of the thing to get us covered has been mentioned. The last tip has to do with exposing the port of our docker container.
Our container is accessible through the ip it has been assigned while creating it however there are cases where we want to map the container’s listening port to our host.
To do so we will use the -p command
docker run -d -p 8080:80 --name my-nginx nginx
In the above example 8080 is the port of our host and 80 is the port of our docker container.
Last but not least you can create an image by a running container by committing it
docker commit e2e222e22e2e dockerimage:version1
So that was a quick reference on the docker commands which you might use on a daily basis.
Published on Web Code Geeks with permission by Emmanouil Gkatziouras, partner at our WCG program. See the original article here: Docker basics: Containers Opinions expressed by Web Code Geeks contributors are their own. |
Thanks for share Great information about Docker.