Skip to content

Instantly share code, notes, and snippets.

@reazul-islam
Last active September 26, 2024 05:23
Show Gist options
  • Select an option

  • Save reazul-islam/5e65921457b55f5320dbe9eaf4daa944 to your computer and use it in GitHub Desktop.

Select an option

Save reazul-islam/5e65921457b55f5320dbe9eaf4daa944 to your computer and use it in GitHub Desktop.
Docker Management

Docker environment setup guide

mkdir database/mysql -p
mkdir apache/data -p
mkdir projects

Docker Install

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
docker -v

#Docker Compose Plugin New 2024

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) -o ~/.docker/cli-plugins/docker-compose

chmod +x ~/.docker/cli-plugins/docker-compose

Create network

# network create 
docker network create \
  --driver=bridge \
  --subnet=172.28.0.0/16 \
  --ip-range=172.28.5.0/24 \
  --internal=false\
  --gateway=172.28.5.254 \
  --attachable=true \
  local-network

# In a single line
docker network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --internal=false --gateway=172.28.5.254 --attachable=true local-network

# Network inspect
docker network inspect local-network

Building and Pushing Docker Images

docker --help

docker image --help

docker image build -t web1 .

docker image inspect web1

docker image build -t web1:1.0 .

docker image build -f DockerfileAnother -t web1:1.0 .

docker image ls

docker image rm web1:1.0

docker image ls

docker login

docker image tag web1 myrepo/web1:latest

docker image ls

docker image push myrepo/web1

docker image rm -f [image id]

docker image ls

docker pull myrepo/web1

docker image ls

Running Docker Containers

docker image tag myrepo/web1 web1

docker image rm myrepo/web1

docker image ls

docker ps # all container list

docker container ls

docker container run -it -p 5000:5000 -e FLASK_APP=app.py web1

docker container ls

docker container ls -a

docker container rm [container id]

docker container run -it -p 5000:5000 -e FLASK_APP=app.py 
--rm --name web1 web1

docker container logs web1

docker container logs -f web1

docker container stats

docker container stop web1

docker container run --help

Docker-compose command

docker-compose up
docker-compose up --build #Build & Up
docker-compose down # Stop and remove container
docker-compose up -d # Detached mode
docker-compose start # existing container operation
docker-compose restart 
docker-compose restart angular # specific service can restart
docker-compose stop

System cleaning command

docker ps   # list of all running containers
docker container ls

docker container ls -a

docker system df     # Show docker disk usage

docker image ls

docker image rm imageID

docker system df -v   # Show detailed information on space usage

docker system info

docker system prune

docker system prune -f    # --forece Do not prompt for confirmation

docker system prune -a    # --all Remove all unused images not just dangling ones

docker container stop web2 redis

docker container stop $(docker container ls -a -q)

Execute command inside of container

docker exec -it container_name bash

Execute command outside of container

docker exec -it container_name your command
docker exec -it sadagar_ng npm install

Symblink in linux

ln -s original_source_folder destination_folder

Portainer installation and use

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

User permission

sudo chown $USER /var/run/docker.sock
sudo usermod -a -G docker $USER

Virtual host setup

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

<VirtualHost *:80>
    ServerName mydomain.local
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

Database Import export from Docker container

Run the following commands from local pc.

# Backup
docker exec <container_id_or_name> /usr/bin/mysqldump -u root -p<root_password> <database_name> > /path/to/local/dump.sql

Example:
docker exec mydbcontainer /usr/bin/mysqldump -u root -pmypassword mydatabase > ./latest_backup.sql

#Restore
docker exec -i <container_id_or_name> /usr/bin/mysql -u root -p<root_password> <database_name> < /dump.sql

Example:
docker exec -i mydbcontainer /usr/bin/mysql -u root -pmypassword mydatabase < latest_backup.sql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment