# Intro Docker Commands

Installing docker is easy and well documented at [Docker Docs](https://docs.docker.com/engine/install/). Here are some quick commands you can use to get started with Docker containers.

## Getting Started
- Docker version:
```
docker --version
```
- Check that Docker is working by running the hello-world container:
```
docker run hello-world
```
- List all images that are locally stored:
```
docker image ls
``` 

## Starting a Container
- Start a Docker container
```
docker container run --name <Name of container>
```
- Run docker container in interactive mode
```
docker run -it --name my-container image_id_here
```
- List Docker containers (running and stopped):
```
docker container ls --all
```
- Start container and map a local OS port to docker port
```
docker run -d -p 80:80 nginx
```
- Start a container and map a service port to a random port
```
docker run -d -P nginx
```

## Image Management
- Pull an image from Docker Hub:
```
docker pull <user_name>/<repo_name>:<version_v1>
```
- Push an image to Docker Hub:
```
docker push <user_name>/<repo_name>:<version>
```
- Tag a container
```
docker tag <image_id> peteawalk/<name_of_repo>:v1
```
- Pull an image from Docker Hub registry:
```
docker pull alpine:3.4
```
- Delete an image from the local image store:
```
docker image rm alpine:3.4
```


## Container Management
- Look for all containers running or exited:
```
peterconqueso@pop-os:~$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS                      PORTS     NAMES
8a9c5b104898   40afe17d4955   "/sbin/tini -- /usr/…"   24 hours ago   Exited (129) 23 hours ago             jenkins
```
- Access Docker container with bash shell:
```
docker exec -it <Name of container> /bin/bash
```
- Run a quick command (file system sizing) in container without accessing container:
```
docker exec -it <Name of container> df -hP
```
- Look at container information, such as state, image, config
```
docker container inspect <container_id>
```
- Grab docker container IP Addres
```
docker container inspect <container_id> | grep IPAdd
```
- Remove unused containers
```
docker container rm <container_id>
```
- Remove all stopped and exited containers AND free up disk space:
```
docker container prune
```


