Docker: Difference between revisions
Jump to navigation
Jump to search
Line 299: | Line 299: | ||
* [https://stackoverflow.com/questions/42158596/can-windows-containers-be-hosted-on-linux#:~:text=solution%20which%20uses%20Vagrant%20and%20Packer%20on%20Mac Can Windows Containers be hosted on Linux?] | * [https://stackoverflow.com/questions/42158596/can-windows-containers-be-hosted-on-linux#:~:text=solution%20which%20uses%20Vagrant%20and%20Packer%20on%20Mac Can Windows Containers be hosted on Linux?] | ||
* [https://forums.docker.com/t/network-bridge-docker0-cant-connect-to-local-network/78175/17#:~:text=default-address-pools <code>Docker0</code> can’t connect to Local Network] | * [https://forums.docker.com/t/network-bridge-docker0-cant-connect-to-local-network/78175/17#:~:text=default-address-pools <code>Docker0</code> can’t connect to Local Network] | ||
* [https://docs.docker.com/registry/recipes/mirror/#run-a-registry-as-a-pull-through-cache Run a Registry as a pull-through Cache] | |||
* [https://docs.docker.com/network/bridge/#configure-the-default-bridge-network Customize the <code>docker0</code> bridge] | * [https://docs.docker.com/network/bridge/#configure-the-default-bridge-network Customize the <code>docker0</code> bridge] | ||
|} | |} |
Revision as of 02:13, 3 January 2021
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
cat <<EOF > /etc/docker/daemon.json
{
"bip" : "10.20.13.1/24",
"mtu" : 1500,
"dns" : [
"10.19.83.5",
"10.19.83.1"
],
"debug": true
}
EOF
|
cat <<EOF > /etc/docker/daemon.json
{
"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
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
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
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
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
|
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
|
Knowledge
docker network ls
docker network prune
docker network rm ckn.b00 ckn.b01
docker inspect nginx|grep "IPAddress"
docker network inspect bridge|grep "Gateway"
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 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