What is a Container
- Docker containers are often compared to virtual machines but they are actually just processes running on your host OS.
- A container is an isolated (namespaces) and restricted (cgroups, capabilities, seccomp) process.
- On Linux you can run ==ps aux== and see the process
- Detailed explanation on containers
Run Containers
Run Containers in the Foreground
docker container run -it -p 80:80 Nginx
# -it = interactive
# -p = port mapping public_port:container_exposed_port
What Happens in the Above Command?
- Look for an image called Nginx in the image cache
- If not found in the cache, it looks to the default image repo on Dockerhub
- Pulls it down (latest version), store it in the image cache
- Started it in a new container
- We specified to take port 80 on the host and forward to port 80 on the container
- We would do ==$ docker container run -d -p 8000:80 nginx== to use port 8000
- We can specify versions like "nginx:1.09"
Run Container in the Background
docker container run -d -p 80:80 nginx
#-d = run in detached mode => no showing log**
Naming Containers
docker container run -d -p 27017:27017 --name my_awsome_mongo mongo
docker container run -d -p --name my_awsome_mongo 27017:27017 mongo
Run Containers with Environment
docker container run -d -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123456 mysql
#then we would be able to access process.env.MYSQL_ROOT_PASSWORD inside the code
docker run --name postgresql -e POSTGRES_USER=myusername -e POSTGRES_PASSWORD=mypassword -p 5432:5432 -v /data:/var/lib/postgresql/data -d postgres
List Containers
List Only Running Container
docker ps
List All Containers Either Running or Not Running
docker ps -a
# -a = all
Stop Container
docker stop [container_id]
Stop All Running Containers
docker stop $(docker ps -aq)
Remove Container
First stop the container as you can not remove a running container
docker rm [container_id]
Remove Multiple Containers
docker rm [container_id1] [container_id2]
Force Remove a Running Container
docker rm -f [container_id]
Remove All Containers
docker rm $(docker ps -aq)
Journey Inside Containers
#docker container exec -it [container_name] bash
docker container exec -it MySQL bash
Logs
- Print the last 100 lines of a container’s logs
docker container logs --tail 100 [container_name]