A Docker image contains the code used to create a Docker container, such as creating a Nginx web server, or a mySQL server, or a home grown app, and the list goes on. In this way, an image is like a template used to create a container. An image is kind of like a virtual machine, but much more light weight, using significantly less storage a memory (containers are usually megabytes in size).
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d937372c09ab9 b939aa938add9913 "/docker-entrypoin..." 6 minutes ago Created my-container
The docker exec command is used to run a command in a container. In this example, the df command will be run in the container.
docker exec d937372c09ab9 df
Something like this should be returned.
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 372607 170989 177862 50% /boot /dev/sda2 129774 6994 122780 6% /opt
The -it or --interactive flag is used to create an interactive tty and the /bin/sh or /bin/bash command can be used to get an interactive shell in the container.
docker exec -it d937372c09ab9 /bin/sh
This would return the following interactive prompt where commands can be issued.
For example, the ip address command could be issued to return the ip address of the container.
/ # ip address
When done, use exit to exit the container.
/ # exit