Skip to main content

Docker

Login to DockerHub:

docker login

Build image based on Dockerfile on . and tag as x/x:latest:

docker build -t x/x:latest .

Push built image to DockerHub:

docker push x/x:latest

Spin-up container based on built image:

docker run -it -d --name x --publish 8080:80 x/x:latest

Will download image from DockerHub if it doesn't exist locally

title: Docker - Default Bridge Linux

category: Automation

Edit or create /etc/docker/daemon.json:

{
"bip": "172.26.0.1/16"
}

Sources:

*https://success.docker.com/article/how-do-i-configure-the-default-bridge-docker0-network-for-docker-engine-to-a-different-subnet

title: Docker - Default Bridge MacOS

category: Automation

On Docker Desktop daemon go to advanced, paste "bip" line below and restart:

{
"debug" : true,
"experimental" : true,
"bip" : "192.168.200.1/24"
}

title: Docker - mongoapp_database.js

category: Automation

module.exports = {
url: 'mongodb://root:[email protected]:27017/x?authSource=admin&w=1'
}

title: Docker - nodejsapp_docker-compose.yml

category: Automation

version: "2"
services:
app-prod:
container_name: app-prod
image: node:10.10
restart: always
working_dir: /usr/src/app
command: sh -c 'npm install >> /var/log/console.log 2>&1; npm start >> /var/log/console.log 2>&1'
volumes:
- ../../:/usr/src/app
- ./log:/var/log/
ports:
- "3000:3000"
links:
- mongo-prod
network_mode: bridge
mongo-prod:
container_name: mongo-prod
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 'x'
image: mongo:4.0.1
restart: always
volumes:
- mongodata-prod:/data/db
network_mode: bridge
command: mongod --port 27017 --bind_ip_all
volumes:
mongodata-prod:

title: Docker - Portainer

category: Automation

docker volume create portainer_data
docker run -d -p 9000:9000 --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

title: Docker - Random

category: Automation

Pull repo from Docker hub:

docker pull ubuntu:latest

Run command on container and quit:

docker run --name disposable --rm -it disposable:16.04 cat /etc/issue

Run command on container on file mounted from current folder and quit:

docker run --name disposable -v $(pwd):/mnt/ --rm -it disposable:16.04 sh -c 'echo "test" > /mnt/test'

Run bash on container CMD+P CMD+Q to leave running:

docker run --name disposable -v $(pwd):/mnt/ --rm -it disposable:16.04 bash

Run container with systemctl daemon in background and launch bash on it:

docker run --rm -ti --name disposable -d --privileged=true -p 2222:22 disposable:16.04
docker exec -ti disposable bash

List Docker images:

docker images

List Docker running containers:

docker container ls

List all docker running and non-running containers:

docker container ls -a

Run an image as container:

docker run -it <image>:<tag>  --restart always [/bin/bash]

-d for daemon
--name for name
-p to expose port

Stop docker container gracefully:

docker stop <container id|name>

Stop all running containers:

docker stop $(docker ps -a -q)

Start docker container:

docker start <container id>

Start all containers:

docker start $(docker ps -a -q)

Kill container immediately:

docker kill <container id>

Output logs from docker container proxying stdout:

docker logs -f <container id>

Exec command on docker container:

docker exec -it /bin/bash

Search images in docker hub:

docker search <search term>

Change the name that has been randomly generated for the container:

docker rename <current_container_name> <new_container_name>

Take a peek inside our containers:

docker stats <container_name>

List of all running processes inside the container: docker top <container_name>

Remove container:

docker rm <container>

-v to remove with volume

Remove all existing containers:

docker rm $(docker ps -a -q)

If some containers are still running as a daemon, use -f (force) param immediately after rm command.

Remove all containers with status=exited:

docker rm $(docker ps -q -f status=exited)

Remove image:

docker rmi <image>