Guide to Docker
Guide to Docker
Docker
Index
Installing docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Remove previous installs
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Install docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Pls dont use this
1
2
3
4
5
6
7
8
9
10
## PLS DONT USE THS
# for debian/ubuntu users
sudo apt update
sudo apt install docker.io
# for fedora users
sudo dnf install docker
# for arch users
sudo pacman -S docker
Running docker daemon
1
2
## PLS DONT USE THS
sudo systemctl enable --now docker.service
For adding user to docker group
1
sudo usermod -aG docker $USER
Basic docker commands
- HELP π
1
docker help
- Current running docker processes (containers) π
1 2
docker ps docker ps -a
-a
β> to get all the running containers-q
β> to get just the container id
- Stopping and Removing π
1 2
docker stop [container_id] docker rm [docker_id]
1
2
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Building and running image
- For building docker image ποΈ
1
docker build -t [image_name] [dir_of_Dockerfile]
- For creating & running docker image π
1
docker run --nane [container_name] [image_name]
- can add
-rm
for stooping and removing docker as u exit - can add
-d
for detaching it from terminal after running (if ur using default bridge network) - add
-p [host_port]:[docker_port]
for mapping a specific docker port to host port
- For executing something inside docker image π±οΈ
1
docker exec [file/command_wanna_run] [container_name]
Other docker commands
- KILL IT πͺπ
1
docker kill [container_id]
- Logs π
1
docker logs [container_id]
Docker hub
- Pull
1
docker pull [image_name]:[tag]
- list of docker image
1
docker image ls
- list of docker image
- Tag
1
docker tag [image_id] [image_name]:[tag]
- Push
1
docker push [image_name]:[tag] # default tag is "latest"
Docker volumes
- create
1
docker volume create [volume_name]
- manage
1 2
docker volume list docker colume inspect [volume_name]
- mount
1 2 3 4
# for mounting docker volume docker run -v [volume_name]:[path_in_container] [docker_image] # for mounting host directry docker run -v "[host_directry]":[volume_name] [docker_image]
- remove
1 2
docker volume rm [volume_name] docker volume prune # to remove all unused volumes
Docker Networks
- Creating network
1
docker network create [network_name]
- Connect
1
docker network connect [network_name] [container_name]
- Disconnect
1
docker network disconect [network_name] [container_name]
- List & Inspect
1 2
docker network ls docker inspect [network_name]
- Delete network
1 2
docker network rm [network_name] doceker network prune #delete all unused network
Default networks
Other networks
- macvlan
- ipvlan
- overlay
(There are other possible P&C tooβ¦.)
Parameters (flags)
--subnet 172.76.0.0/16
β> to define subnet--gateway 172.76.0.1/16
β> to define the gateway of the network-o parent=[network_interface]
β> to define the physical network interface
Bridge network
Itβs the default one no need for any flags.
User-Defined Bridge Network
1
2
docker network create [network_name]
docker run --network [network_name] [container_id] [image_name]
Host network
1
docker run --network host [container_id] [image_name]
None
1
docker run --network none [container_id] [image_name]
Docker Web-Interface
portainer-ce
- Instalation
Create a docker voume or direct mount to a host directry
1
docker volume create portainer_data
Run the portainer as a contatiner on the bridge network
1
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.5
Sample docker-compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---
services:
portainer:
image: portainer/portainer:latest
container_name: portainer
environment:
- PUID = ${UID}
- PGID = ${GID}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${DATA}:/data
ports:
- 8000:8000
# - 9000:9000 #HTTP port
- 9443:9443 #HTTPS port
restart: always
Dockerfile
Common tags:
FROM
β> Base imageCOPY
β> Commands to runWORKDIR
β> current working dir in the containerEXPOSE
β> expose the mentioned portCMD
β> run the final service (should not have a terminatig shell)
Docker Compose
Common paramaters:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
service
[service-name]
image: [image_name]
container_name: [any_name_for_container]
hostname: [hostname]
user: [GID]:[UID]
# env_file:
# - [.env_location]
environment:
- [parameter]=[value]
volumes:
- [host_location]\:[container_location]
ports:
- [host_port]\:[container_port]
restart: [always, unless-stopped, ....]
Sources
This post is licensed under CC BY 4.0 by the author.