Docker is a tool that allows users to easily deploy and run applications by packaging them into software containers. Containers encapsulate an application and its dependencies to enable portability across computing environments. To run an application like Nginx in a Docker container, you first pull the Nginx image, run it in a container with ports exposed, and access it via the host IP address. You can also create your own custom webpage by mounting a host directory containing HTML files into the container. Finally, a webapp from GitHub can be run using Docker by linking a GitHub repository to Docker Hub and pulling the image.