Docker: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 1: | Line 1: | ||
{|class='wikitable | {|class='wikitable' | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
sudo usermod -aG docker $USER | sudo usermod -aG docker $USER | ||
newgrp docker | newgrp docker | ||
| Line 15: | Line 15: | ||
==Windows 10 Home== | ==Windows 10 Home== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left' colspan='2'| | !scope='col' style='text-align:left' colspan='2'| | ||
Windows 10 Home | Windows 10 Home | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='powershell'> | ||
# powershell | # powershell | ||
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart | dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart | ||
| Line 28: | Line 28: | ||
|- | |- | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='powershell'> | ||
# powershell | # powershell | ||
docker pull hello-world | docker pull hello-world | ||
| Line 35: | Line 35: | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
# gitbash | # gitbash | ||
winpty docker pull hello-world | winpty docker pull hello-world | ||
| Line 43: | Line 43: | ||
==Networking== | ==Networking== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left' colspan='2'| | !scope='col' style='text-align:left' colspan='2'| | ||
Networking | Networking | ||
|- | |- | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='json'> | ||
cat <<'EOF' | \ | cat <<'EOF' | \ | ||
sudo tee /etc/docker/daemon.json >/dev/null | sudo tee /etc/docker/daemon.json >/dev/null | ||
| Line 65: | Line 65: | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='json'> | ||
cat << EOF | \ | cat << EOF | \ | ||
sudo tee /etc/docker/daemon.json >/dev/null | sudo tee /etc/docker/daemon.json >/dev/null | ||
| Line 82: | Line 82: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
apt install -y iputils | apt install -y iputils | ||
iptables -t nat -S | iptables -t nat -S | ||
| Line 100: | Line 100: | ||
===Bridge=== | ===Bridge=== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Bridge | Bridge | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network create \ | docker network create \ | ||
--driver bridge \ | --driver bridge \ | ||
| Line 119: | Line 119: | ||
===MAC VLAN=== | ===MAC VLAN=== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
MAC VLAN | MAC VLAN | ||
| Line 125: | Line 125: | ||
|valign='top'| | |valign='top'| | ||
'''Bridge mode''' | '''Bridge mode''' | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network create \ | docker network create \ | ||
--driver macvlan \ | --driver macvlan \ | ||
| Line 135: | Line 135: | ||
|valign='top'| | |valign='top'| | ||
'''802.1q trunk bridge mode''' | '''802.1q trunk bridge mode''' | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network create \ | docker network create \ | ||
--driver macvlan \ | --driver macvlan \ | ||
| Line 145: | Line 145: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network inspect ckn.v00 | docker network inspect ckn.v00 | ||
docker network connect ckn.v00 nginx | docker network connect ckn.v00 nginx | ||
| Line 151: | Line 151: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker exec -it nginx ls -lah /sys/class/net/ | docker exec -it nginx ls -lah /sys/class/net/ | ||
docker exec -it nginx cat /etc/resolv.conf | docker exec -it nginx cat /etc/resolv.conf | ||
| Line 163: | Line 163: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network disconnect bridge nginx | docker network disconnect bridge nginx | ||
docker network disconnect ckn.v00 nginx | docker network disconnect ckn.v00 nginx | ||
| Line 170: | Line 170: | ||
===IP VLAN=== | ===IP VLAN=== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
IP VLAN | IP VLAN | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network create -d ipvlan \ | docker network create -d ipvlan \ | ||
--subnet=10.20.1.0/24 \ | --subnet=10.20.1.0/24 \ | ||
| Line 186: | Line 186: | ||
==Cache or Mirror== | ==Cache or Mirror== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Cache or Mirro | Cache or Mirro | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='yaml'> | ||
mkdir -p /etc/docker/registry | mkdir -p /etc/docker/registry | ||
cat <<EOF > /etc/docker/registry/config.yml | cat <<EOF > /etc/docker/registry/config.yml | ||
| Line 204: | Line 204: | ||
==Add Tag & Push== | ==Add Tag & Push== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Add Tag & Push | Add Tag & Push | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
RFIND_FILL="s|docker.chorke.com|docker.chorke.org|";\ | RFIND_FILL="s|docker.chorke.com|docker.chorke.org|";\ | ||
OLD_IMAGES="$(docker images --format 'table {{.Repository}}:{{.Tag}}'|grep chorke)";\ | OLD_IMAGES="$(docker images --format 'table {{.Repository}}:{{.Tag}}'|grep chorke)";\ | ||
| Line 223: | Line 223: | ||
==Troubleshoot== | ==Troubleshoot== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left' colspan='2'| | !scope='col' style='text-align:left' colspan='2'| | ||
Troubleshoot | Troubleshoot | ||
|- | |- | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run --rm --net=host busybox nslookup google.com | docker run --rm --net=host busybox nslookup google.com | ||
docker run --rm --net=host alpine cat /etc/resolv.conf | docker run --rm --net=host alpine cat /etc/resolv.conf | ||
| Line 240: | Line 240: | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run --rm busybox nslookup google.com | docker run --rm busybox nslookup google.com | ||
docker run --rm alpine cat /etc/resolv.conf | docker run --rm alpine cat /etc/resolv.conf | ||
| Line 252: | Line 252: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run --add-host=host.docker.internal:host-gateway\ | docker run --add-host=host.docker.internal:host-gateway\ | ||
-it --rm alpine ping host.docker.internal | -it --rm alpine ping host.docker.internal | ||
| Line 258: | Line 258: | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run --add-host=host.docker.internal:host-gateway\ | docker run --add-host=host.docker.internal:host-gateway\ | ||
-it --rm alpine sh | -it --rm alpine sh | ||
| Line 264: | Line 264: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker inspect crawler|grep compose | docker inspect crawler|grep compose | ||
docker logs crawler | docker logs crawler | ||
| Line 273: | Line 273: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
export DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false --ip-forward=false" | export DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false --ip-forward=false" | ||
firewall-cmd --permanent --zone=trusted --change-interface=docker0 | firewall-cmd --permanent --zone=trusted --change-interface=docker0 | ||
| Line 281: | Line 281: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
systemctl stop docker | systemctl stop docker | ||
rm -fr /var/lib/docker | rm -fr /var/lib/docker | ||
| Line 289: | Line 289: | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
iptables -t nat -F | iptables -t nat -F | ||
ifconfig docker0 down | ifconfig docker0 down | ||
| Line 297: | Line 297: | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
vim /etc/selinux/config | vim /etc/selinux/config | ||
shutdown -r now | shutdown -r now | ||
| Line 305: | Line 305: | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
#devil most things for docker0 bridge | #devil most things for docker0 bridge | ||
sudo apt remove netscript-2.4 | sudo apt remove netscript-2.4 | ||
| Line 314: | Line 314: | ||
==Ryzen AMD-V== | ==Ryzen AMD-V== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Ryzen AMD-V | Ryzen AMD-V | ||
| Line 323: | Line 323: | ||
==Images Path== | ==Images Path== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Images Path | Images Path | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='properties'> | ||
Ubuntu: /var/lib/docker/ | Ubuntu: /var/lib/docker/ | ||
Fedora: /var/lib/docker/ | Fedora: /var/lib/docker/ | ||
| Line 338: | Line 338: | ||
==Backup & Restore== | ==Backup & Restore== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Backup & Restore | Backup & Restore | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker pull gitea/gitea:1.10.6 | docker pull gitea/gitea:1.10.6 | ||
docker pull gitea/gitea:1.16.2 | docker pull gitea/gitea:1.16.2 | ||
| Line 356: | Line 356: | ||
==Reclaim Disk Space== | ==Reclaim Disk Space== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Reclaim Disk Space | Reclaim Disk Space | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
cat <<'EXE' | sudo bash | cat <<'EXE' | sudo bash | ||
sh -c 'du -sh /var/lib/docker/containers/*' | sh -c 'du -sh /var/lib/docker/containers/*' | ||
| Line 391: | Line 391: | ||
==Custom Docker Image== | ==Custom Docker Image== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Custom Docker Image | Custom Docker Image | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
cat <<'INI' | tee ./Dockerfile >/dev/null | cat <<'INI' | tee ./Dockerfile >/dev/null | ||
FROM eclipse-temurin:17-jre-focal | FROM eclipse-temurin:17-jre-focal | ||
| Line 410: | Line 410: | ||
==Recovery Parent Image== | ==Recovery Parent Image== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left'| | !scope='col' style='text-align:left'| | ||
Recovery Parent Image | Recovery Parent Image | ||
|- | |- | ||
|valign='top'| | |valign='top'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker pull docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 | docker pull docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 | ||
docker history docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 | docker history docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 | ||
| Line 440: | Line 440: | ||
==Knowledge== | ==Knowledge== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left' colspan='2'| | !scope='col' style='text-align:left' colspan='2'| | ||
Knowledge | Knowledge | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network ls | docker network ls | ||
docker network prune | docker network prune | ||
| Line 456: | Line 456: | ||
|- | |- | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker rm $(docker ps -a -q) | docker rm $(docker ps -a -q) | ||
docker stop $(docker ps -a -q) | docker stop $(docker ps -a -q) | ||
| Line 462: | Line 462: | ||
|valign='top' style='width:50%'| | |valign='top' style='width:50%'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker inspect nginx | docker inspect nginx | ||
docker update --restart=no nginx | docker update --restart=no nginx | ||
| Line 468: | Line 468: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run --rm -dit --network \ | docker run --rm -dit --network \ | ||
none --name alpine alpine:latest ash;\ | none --name alpine alpine:latest ash;\ | ||
| Line 475: | Line 475: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network create --driver bridge \ | docker network create --driver bridge \ | ||
--opt com.docker.network.bridge.name=ckn.b00 ckn.b00 | --opt com.docker.network.bridge.name=ckn.b00 ckn.b00 | ||
| Line 481: | Line 481: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network connect ckn.b00 nginx | docker network connect ckn.b00 nginx | ||
docker exec -it nginx cat /etc/hosts | docker exec -it nginx cat /etc/hosts | ||
| Line 492: | Line 492: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker cp ~/.m2/settings.xml alpine:/root/.m2/settings.xml | docker cp ~/.m2/settings.xml alpine:/root/.m2/settings.xml | ||
docker cp alpine:/root/.m2/settings.xml ~/.m2/settings.xml | docker cp alpine:/root/.m2/settings.xml ~/.m2/settings.xml | ||
| Line 498: | Line 498: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker network disconnect bridge nginx | docker network disconnect bridge nginx | ||
docker network disconnect ckn.b00 nginx | docker network disconnect ckn.b00 nginx | ||
| Line 505: | Line 505: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker run -itd --network=ckn.b00 nginx | docker run -itd --network=ckn.b00 nginx | ||
docker network disconnect ckn.b00 nginx | docker network disconnect ckn.b00 nginx | ||
| Line 512: | Line 512: | ||
|- | |- | ||
|valign='top' colspan='2'| | |valign='top' colspan='2'| | ||
<syntaxhighlight | <syntaxhighlight lang='bash'> | ||
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) | docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) | ||
docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}" | docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}" | ||
| Line 524: | Line 524: | ||
==References== | ==References== | ||
{|class='wikitable mw-collapsible | {|class='wikitable mw-collapsible' | ||
!scope='col' style='text-align:left' colspan='3'| | !scope='col' style='text-align:left' colspan='3'| | ||
References | References | ||
Latest revision as of 04:00, 3 February 2026
sudo usermod -aG docker $USER
newgrp docker
mkdir "$HOME/.docker"
sudo chown "$USER":"$USER" "$HOME/.docker" -R
sudo chmod g+rwx "$HOME/.docker" -R
sudo systemctl daemon-reload
sudo systemctl restart docker.service
|
Windows 10 Home
|
Windows 10 Home | |
|---|---|
# powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
| |
# powershell
docker pull hello-world
docker run -it --rm --name hello hello-world:latest
|
# gitbash
winpty docker pull hello-world
winpty docker run -it --rm --name hello hello-world:latest
|
Networking
|
Networking | |
|---|---|
cat <<'EOF' | \
sudo tee /etc/docker/daemon.json >/dev/null
{
"bip" : "10.20.13.1/24",
"mtu" : 1500,
"dns" : [
"1.1.1.1",
"8.8.8.8",
"192.168.49.2"
],
"debug": true
}
EOF
|
cat << EOF | \
sudo tee /etc/docker/daemon.json >/dev/null
{
"mtu" : 1500,
"debug" : true,
"experimental": false,
"default-address-pools" :[{
"base" : "10.20.0.0/16",
"size" : 24
}]
}
EOF
|
apt install -y iputils
iptables -t nat -S
service docker stop
service docker start
docker run --rm --detach --publish 1983:80 nginx
docker run --rm --detach --net=host nginx
docker run --rm --detach --publish 1983:80 --net=ckn.b00 --ip 10.20.15.10 nginx
docker run --rm --detach --publish 1983:80 --net=ckn.b01 --ip 10.20.16.10 nginx
|
|
Bridge
|
Bridge |
|---|
docker network create \
--driver bridge \
--gateway 10.20.15.1 \
--subnet 10.20.15.0/24 \
--opt com.docker.network.driver.mtu=1500 \
--opt com.docker.network.bridge.enable_icc=true \
--opt com.docker.network.bridge.enable_ip_masquerade=true \
--opt com.docker.network.bridge.host_binding_ipv4=0.0.0.0 \
--opt com.docker.network.bridge.name=ckn.b00 ckn.b00
|
MAC VLAN
|
MAC VLAN |
|---|
|
Bridge mode docker network create \
--driver macvlan \
--gateway 10.20.20.1 \
--subnet 10.20.20.0/24 \
--opt parent=wlan0 ckn.v00
|
|
802.1q trunk bridge mode docker network create \
--driver macvlan \
--gateway 10.20.20.1 \
--subnet 10.20.20.0/24 \
--ip-range 10.20.20.240/28 \
--opt parent=wlan0.01 ckn.v01
|
docker network inspect ckn.v00
docker network connect ckn.v00 nginx
|
docker exec -it nginx ls -lah /sys/class/net/
docker exec -it nginx cat /etc/resolv.conf
docker inspect nginx|grep "IPAddress"
docker exec -it nginx cat /etc/hosts
curl -v http://10.20.20.240:1983
curl -v http://localhost:1983
curl -v http://10.20.20.240
|
docker network disconnect bridge nginx
docker network disconnect ckn.v00 nginx
|
IP VLAN
|
IP VLAN |
|---|
docker network create -d ipvlan \
--subnet=10.20.1.0/24 \
--subnet=10.20.2.0/24 \
--gateway=10.20.1.254 \
--gateway=10.20.2.254 \
--opt ipvlan_mode=l2 ckn.i00
|
Cache or Mirror
|
Cache or Mirro |
|---|
mkdir -p /etc/docker/registry
cat <<EOF > /etc/docker/registry/config.yml
---
proxy:
remoteurl: https://hub.chorke.org
username: academia
password: sadaqah!
EOF
|
Add Tag & Push
|
Add Tag & Push |
|---|
RFIND_FILL="s|docker.chorke.com|docker.chorke.org|";\
OLD_IMAGES="$(docker images --format 'table {{.Repository}}:{{.Tag}}'|grep chorke)";\
for OLD_IMAGE in ${OLD_IMAGES};do\
NEW_IMAGE="$(echo ${OLD_IMAGE}|sed ${RFIND_FILL})";\
docker tag ${OLD_IMAGE} ${NEW_IMAGE} &&\
docker push ${NEW_IMAGE} &&\
docker rmi ${NEW_IMAGE} &&\
docker rmi ${OLD_IMAGE};\
done
|
Troubleshoot
|
Troubleshoot | |
|---|---|
docker run --rm --net=host busybox nslookup google.com
docker run --rm --net=host alpine cat /etc/resolv.conf
docker run --rm --net=host alpine nslookup google.com
docker run --rm --net=host alpine ping google.com
docker run --rm --net=host alpine cat /etc/hosts
docker run --rm --net=host alpine ifconfig
docker run --rm --net=host alpine ip addr
docker run --rm --net=host alpine route
|
docker run --rm busybox nslookup google.com
docker run --rm alpine cat /etc/resolv.conf
docker run --rm alpine nslookup google.com
docker run --rm alpine ping google.com
docker run --rm alpine cat /etc/hosts
docker run --rm alpine ifconfig
docker run --rm alpine ip addr
docker run --rm alpine route
|
docker run --add-host=host.docker.internal:host-gateway\
-it --rm alpine ping host.docker.internal
|
docker run --add-host=host.docker.internal:host-gateway\
-it --rm alpine sh
|
docker inspect crawler|grep compose
docker logs crawler
docker logs -f crawler
|
|
export DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false --ip-forward=false"
firewall-cmd --permanent --zone=trusted --change-interface=docker0
firewall-cmd --reload
systemctl restart docker
| |
systemctl stop docker
rm -fr /var/lib/docker
rm -fr /etc/docker
pkill docker
|
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
systemctl start docker
|
vim /etc/selinux/config
shutdown -r now
setenforce 0
sestatus
|
#devil most things for docker0 bridge
sudo apt remove netscript-2.4
sudo apt purge netscript-2.4
sudo apt autoremove
|
Ryzen AMD-V
|
Ryzen AMD-V |
|---|
|
Yes, AMD Ryzen 9 3900x supports virtualization. Almost every processors released since a long time have Virtualization. For Windows it's Vt-x or SVM(in some AMD motherboard vtx is renamed as SVM). |
Images Path
|
Images Path |
|---|
Ubuntu: /var/lib/docker/
Fedora: /var/lib/docker/
Debian: /var/lib/docker/
Windows: C:\ProgramData\DockerDesktop
MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/
|
Backup & Restore
|
Backup & Restore |
|---|
docker pull gitea/gitea:1.10.6
docker pull gitea/gitea:1.16.2
docker image load -i ~/.config/backup/gitea_gitea_1.10.6.tar
docker image load -i ~/.config/backup/gitea_gitea_1.16.2.tar
docker image save -o ~/.config/backup/gitea_gitea_1.10.6.tar gitea/gitea:1.10.6
docker image save -o ~/.config/backup/gitea_gitea_1.16.2.tar gitea/gitea:1.16.2
|
Reclaim Disk Space
|
Reclaim Disk Space |
|---|
cat <<'EXE' | sudo bash
sh -c 'du -sh /var/lib/docker/containers/*'
sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log' 2>/dev/null
docker images -f 'dangling=true' -q
docker rmi $(docker images -f 'dangling=true' -q) 2>/dev/null
docker system prune -f --volumes
docker builder prune -f -a
docker network prune -f
docker volume prune -f
apt-get clean
apt-get autoclean
apt-get autoremove -y
journalctl --disk-usage
journalctl --vacuum-time=90d
find /tmp -type f -mtime +7
find /tmp -type f -mtime +7 -delete
find /var/log/nginx -type f -mtime +90
find /var/log/nginx -type f -mtime +90 -delete
EXE
|
Custom Docker Image
|
Custom Docker Image |
|---|
cat <<'INI' | tee ./Dockerfile >/dev/null
FROM eclipse-temurin:17-jre-focal
RUN apt update --fix-missing \
&& apt install -y nginx apache2-utils
INI
docker build --rm -t 'docker.shahed.biz/tools/eclipse-temurin:17-jre-focal' -f ./Dockerfile .
docker push docker.shahed.biz/tools/eclipse-temurin:17-jre-focal
|
Recovery Parent Image
|
Recovery Parent Image |
|---|
docker pull docker.shahed.biz/shahed-academia-apps:2025-10-10T1010
docker history docker.shahed.biz/shahed-academia-apps:2025-10-10T1010
docker inspect docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 | jq '.[0].RootFS.Layers'
docker run -it --name recovery-openjdk-17-slim docker.shahed.biz/shahed-academia-apps:2025-10-10T1010 bash
# executing bash command try to clean up new changes and then commit as below
docker commit recovery-openjdk-17-slim openjdk:17-slim
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
alpine/dfimage:1.2 docker.shahed.biz/shahed-academia-apps:2025-10-10T1010
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive:v0.13.1 docker.shahed.biz/shahed-academia-apps:2025-10-10T1010
docker rmi docker.shahed.biz/shahed-academia-apps:2025-10-10T1010
docker rm recovery-openjdk-17-slim
docker rmi wagoodman/dive:v0.13.1
docker rmi alpine/dfimage:1.2
|
Knowledge
|
Knowledge | |
|---|---|
docker network ls
docker network prune
docker network rm ckn.b00 ckn.b01
docker inspect nginx|grep compose
docker inspect nginx|grep "IPAddress"
docker network inspect bridge|grep "Gateway"
| |
docker rm $(docker ps -a -q)
docker stop $(docker ps -a -q)
|
docker inspect nginx
docker update --restart=no nginx
|
docker run --rm -dit --network \
none --name alpine alpine:latest ash;\
docker exec -it alpine ip link show
| |
docker network create --driver bridge \
--opt com.docker.network.bridge.name=ckn.b00 ckn.b00
| |
docker network connect ckn.b00 nginx
docker exec -it nginx cat /etc/hosts
docker inspect nginx|grep "IPAddress"
docker exec -it nginx cat /etc/resolv.conf
docker exec -it nginx ls -lah /sys/class/net/
docker run --add-host=host.docker.internal:host-gateway\
--rm alpine ping host.docker.internal
| |
docker cp ~/.m2/settings.xml alpine:/root/.m2/settings.xml
docker cp alpine:/root/.m2/settings.xml ~/.m2/settings.xml
| |
docker network disconnect bridge nginx
docker network disconnect ckn.b00 nginx
docker exec -it nginx ls -lah /sys/class/net/
| |
docker run -itd --network=ckn.b00 nginx
docker network disconnect ckn.b00 nginx
docker network connect --alias db --alias mysql ckn.b00 mysql
| |
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"
docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"
docker ps --format "table {{.ID}}\t{{.Labels}}"
docker ps --format '{{.Names}}\t{{.Image}}'
docker ps --format "{{.ID}}: {{.Command}}"
docker ps --filter publish=80/udp
| |