Ankit

Docker 101-Part#4

Docker 101-Part#4

Docker-101 Part-4 which would enable you to run various commands using Docker CLI.

Docker CLI

To access Docker CLI you would have to execute command docker in your command prompt.

$ docker
Usage: docker [OPTIONS] COMMAND [ARG...]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host value         Daemon socket(s) to connect to (default [])
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Commands:
    attach    Attach to a running container
    # […]

docker help

To list the help on any command just execute the command, followed by the --help option.

$ docker run --help

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host value             Add a custom host-to-IP mapping (host:ip) (default [])
  -a, --attach value               Attach to STDIN, STDOUT or STDERR (default [])
...

docker image

To run any container locally on your docker host you would need Docker Images available on the host. You can use following commands to push or pull images from the docker registry

To list the images on docker host

$ docker image ls

To pull the images from docker registry

$ docker image pull centos:latest

To push the images to docker registry from your local docker host

$ docker image push NAME[:TAG]

Here NAME should be your repository name either on Docker registry or your private registry, TAG should represent the version information about your image.

To remove any of the images available on your docker host

$ docker image rm NAME[:TAG]
OR
$ docker rmi NAME[:TAG]

docker run

To run any docker container this command is used. General usage of this as follows

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

Some examples:

  • To run a centos docker container
    $ docker run -it centos:latest
    

    -i is for interactive -t is for allocating a pseudo-tty.

  • To run a container with exposing a specific port
    $ docker run --name some-nginx -d -p 8080:80 some-content-nginx
    

    --name to give a specific name to your container -p to do a port mapping

  • To run a container passing some environment variables
    $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    

    -e is used to pass on any environment variables in the container

  • To run a container mounting a persistent volume
    $ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
    

    -v is used to mounting volumes to Docker containers

Accessing docker containers

To access docker containers we need to use docker exec

General Usage

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

So if we need to access CentOS container, an example would be something like this

$ docker exec -it [container_name or container_id] /bin/bash(Shell)

Operations on docker containers

To list all the running containers

$ docker ps

To list all the containers despite their status

$ docker ps -a

To stop a running container

$ docker stop [container_name or container_id]

To start a container which is in STOP state

$ docker start [container_name or container_id]

To remove a container from docker host

$ docker rm [container_name or container_id]

Container has to be in stop state before you can remove it

To check the stats of running containers

$ docker stats

To check the logs of a specific container

$ docker logs [container_name or container_id]

This concludes our series on Docker containers, I hope the information would enable you to be able to learn the basics of Docker and start utilizing the power of containers for your development environment.

Please comment down below to let us know your views, feedbacks and also what should be the next series which you would like us to start?

Before we leave, Here’s a cheat-sheet for running Docker containers.

References

comments powered by Disqus