Table of Contents
Notatka z dockera
instalacja
$ sudo apt update $ sudo apt install docker.io $ docker -v $ sudo usermod -a -G docker <default user>
obraz dockera jest jak klasa w cpp i jest używany do tworzenia kontenera
wyszukiwanie obrazu
$ docker search ubuntu
pobieranie obrazu
$ docker pull ubuntu
wypisz wszystkie obrazy
$ docker image ls
uruchom kontener
$ docker run ubuntu
informacje o kontenerze
$ docker container inspect kali1
wypisz uruchomione kontenery
$ docker ps -a
uruchom kontener z procesem
$ docker run --name $ubu2 -it ubuntu bash
wyjdź z kontenera bez zatrzymywania go
ctrl+p ctrl+q
wróć do kontenera
$ docker attach eb4
albo (tworząc nowy proces)
$ docker exec -it eb4 bash
usuwanie obrazu
$ docker image rm <id> $ docker rmi <id>
Usuwanie kontenera
$ docker rm <id>
Usunięcie wszystkich kontenerów
$ docker container prune
uruchomienie w detachu
$ docker run -d --name ng nginx
wyświetlenie logów
$ docker logs <id>
uruchomienie z przekierowanie portów
$ docker run -d -p 8080:80 --name ng2 nginx
wybór losowego portu
$ docker run -d -P --name ng2 nginx
Sieci
wylistuj sieci
$ docker network ls
inspekcja sieci
$ docker network inspect bridge
tworzenie sieci
$ docker network create mojasiec $ docker network connect mojasiec kali1 $ docker network create --subnet 10.0.0.0/24 newlan
można też podłączyć do sieci przy tworzeniu
$ docker run -dit --name kali3 --net mojasiec kalilinux/kali-rolling /bin/bash $ docker create -it --name kali4 --net mojasiec kalilinux/kali-rolling /bin/bash
odłączanie od sieci
$ docker network disconnect bridge kali1
Kopiowanie plików
$ docker run -d --name debtest1 debian sleep inf $ docker cp file.txt debtest1:/file.txt $ docker cp debtest1:/file.txt ./file2.txt
(nie da się kopiować między kontenerami)
Montowanie katalogów
$ mkdir -p directory/{a,b,c}
$ docker run -it -v ~/directory:/losowykatalog debian bash
Wolumeny
$ docker volume create vol $ docker volume ls $ docker inspect vol
Dockerfile
Dockerfile to plik z instrukcjami budowania obrazów dockera
$ docker build -t img:tagname . $ docker run -it img:tagname bash
Docker Swarm
przyznawanie statycznego adresu ip przy tworzeniu noda
/etc/network/interfaces
auto enp0s3 iface enp0s3 inet dhcp auto enp0s8 iface enp0s8 inet static address 192.168.100.1 netmask 255.255.255.0
potem w konsoli
systemctl restart networking
Tworzenie do swarma
$ docker swarm init --advertise-addr 192.168.100.1 $ docker swarm join-token worker
Dołączanie do swarma
$ docker swarm join --token asdfasdfasdfasdf
Operacje na nodach
$ docker node ls $ docker node inspect <id> $ docker node promote <id>
usuwanie noda
$ docker node rm <id> $ docker swarm leave (z poziomu node)
serwisy (cos takiego jak docker run)
$ docker service create --name <name> debian sleep inf $ docker exec -it <id> bash $ docker service create --name deb constrain node.hostname==node2 debian sleep inf $ docker service create --name viz -p 8080:8080 --constraint node.role=manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer $ docker network create -d overlay --opt encrypted newcryptnet $ docker service create --name=vol --mount type=volume,source=newv,target=/workdir deb sleep inf $ docker service create --name redisbad --replicas=4 redis $ docker service ps redisbad
