Skip to main content

Docker

Commands

Create a user-defined network

docker network create --driver bridge <network-name>

To remove a network:

docker network rm <network-name>

Start container & force rebuild

docker-compose up --build <service>

Manage service state

docker start <service>
docker stop <service>

docker rm <service>
docker rm -f <service>

Get container details

docker inspect -f

Images

Image prune

docker image prune --filter="label=deprecated"
docker image prune --filter="label!=down=deprecated"

Containers

Shell access to container

Debian

docker exec -it <container> /bin/bash

Alpine

docker exec -it --user root <container> sh

Copy file between host & container

docker cp <container>:/path/to/file.ext .
docker cp ./file.ext <container>:/path/to/file.ext

Containers - MySQL

Connect to database instance

mysql -u root -p

Create new database user

CREATE USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON *.* TO 'username'@'%';
FLUSH PRIVILIGES;

Export database dump file

docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql

Restore database dump file

docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE < backup.sql

Enable ONLY_FULL_GROUP_BY

\sql
\connect root@localhost

SET sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY',''));

docker-compose.yml

extends

services

Service properties can be overridden in the location that it was extended in.

env_file

Respective .env file is loaded from the context in which docker-compose command is run. If a service is extended, properties defined in its own .env file, must also be defined in the .env file where it is extended.

networks

Any defined networks is an extended service must also live where it was extended.

Define top-level variables

dev.database-env:
KEY: value

services:
service-name:
environment:
<<: *database-env

Daemon WSL 2

WSL Features

Limit resources used by Docker daemon using WSL 2

Create .wslconfig config file:

%USERPROFILE%/.wslconfig

[wsl2]
memory=1GB
swap=1GB
processors=1

Restart WSL service:

Restart-Service LxssManager