Manu

Docker Cheat Sheet - Szybka Ściągawka

Docker Cheat Sheet - Szybka Ściągawka
Docker Cheat Sheet: IMAGES
Kategoria Komenda / Opis
Info

Pokaż obrazy na hoście:
docker images

Pobierz ID obrazu po nazwie:
docker images --format="{{.ID}}" myImageName

Sprawdź obraz (JSON):
docker inspect image:version | jq .

Remove

Usuń obraz po nazwie:
docker rmi reponame:tag

Usuń wiszące obrazy (bez nazw/tagów):
docker image prune

Usuń wszystkie obrazy bez uruchomionego kontenera-dziecka:
docker image prune -a

Usuń WSZYSTKIE obrazy:
docker rmi $(docker images -qa)

Build

Zbuduj obraz z Dockerfile:
docker build -t user/image-name .

Przykładowa konfiguracja Dockerfile:

FROM debian:wheezy  # provide a base image
RUN apt-get update && apt-get install -y cowsay  # run additional commands
ENTRYPOINT /usr/bin/telnet
ADD /host_dir /target_dir # copy contents to container from the host
CMD "echo" "all done!"  # cmd to execute once container is built
ENV PROXY_SERVER http://www.proxy.com # set env vars
EXPOSE 8250  # expose port from service inside container to outside
USER 125  # UID of user running the container
VOLUME ["/tmp"] # enable access from container to dir on the host machine
WORKDIR ~/dev  # where CMD will execute from
COPY file.conf /etc/app/app.conf # copy from host to container
Docker Cheat Sheet: Network
Kategoria Komenda / Opis
Zarządzanie

Pokaż sieci:
docker network ls

Usuń sieć:
docker network rm <nazwa_sieci>

Uprawnienia

Dodaj nową grupę docker:
groupadd docker

Dodaj użytkownika do grupy:
usermod -aG jsmith docker

Zmień uprawnienia pliku socket Docker:
chmod root:docker /var/run/docker.sock

Przeloguj się i uruchom:
docker run hello-world

Docker Cheat Sheet: CONTAINERS
Kategoria Komenda / Opis
Info

Pokaż wszystkie kontenery i ich status:
docker ps -a

Pobierz tylko ID kontenerów:
docker ps -qa

Pokaż różnice w kontenerze:
docker diff containerName

Zobacz wszystkie operacje w kontenerze (logi):
docker logs containerName (lub container ID)

Pobierz info JSON o kontenerze:
docker inspect <containerName lub containerID>

Wejdź do kontenera (bash):
docker exec -ti <Container Name> bash

Wejdź do kontenera, filtruj po nazwie:
docker exec -ti $(docker ps -qf "name=worker") bash

Wejdź do ZATRZYMANEGO kontenera:
docker run -it --entrypoint /bin/bash <image_id>

Zainstaluj pakiet w kontenerze:
docker run -u root -ti <container ID> apt update
docker run -u root -ti <container ID> apt install vim

Pobierz wyjście JSON wszystkich kontenerów:
curl -s --unix-socket /var/run/docker.sock http:/containers/json

Połącz się SSH z istniejącym, uruchomionym kontenerem:
docker attach $containerID
docker exec -ti $containerID bash

Połącz sieć kontenera z hostem:
docker run --network host -d --rm -e VAULT_DEV_ROOT_TOKEN_ID=abcd -p "8200:8200" artifactory.corp.local/docker.io/vault:0.9.5
(będzie nasłuchiwać na 0.0.0.0:8200)

Pokaż wszystkie "dangling" wolumeny (nieużywane):
docker volume ls -qf dangling=true

Run / Stop

Uruchom kontener i zaloguj się przez terminal:
docker run -it imageName

Uruchom kontener z konkretną nazwą hosta i nazwą kontenera:
docker run -it --name myName --hostname myHostname imageName

Uruchom kontener jako daemon, binduj port, nadaj nazwę:
docker run -d -p 5200:5200 --name myName imageName

Zatrzymaj uruchomiony kontener:
docker ps (pobierz ID kontenera)
docker stop $containerID (lub po nazwie)

Zatrzymaj wszystkie uruchomione kontenery:
docker ps -a --format="{{.ID}}" | xargs docker stop

Uruchom kontener:
docker start $containerID

Wyjdź z kontenera, jeśli zalogowano się przez terminal:
exit

Uruchom kontener, udostępnij wolumen hostowi (np. logi aplikacji):
docker run -p 5100:5100 --volume <ścieżka_na_hoście>:<ścieżka_w_kontenerze>
docker run -p 5100:5100 --volume /host/data/app1:/opt/container/app1

Zabij zombie-kontenery, które się restartują:
docker ps -a --format="{{.ID}}" | xargs docker update --restart=no | xargs docker stop | xargs docker rmi $(docker images -qa) --force

Remove

Usuń kontener po nazwie:
docker rm <nazwa>

Usuń wszystkie zatrzymane kontenery:
docker container prune

Usuń wszystkie kontenery:
docker rm $(docker ps -aq)

Wyczyść wszystko (wiszące obrazy, kontenery, sieci):
docker system prune -f

Usuń "dangling" wolumeny:
docker volume rm $(docker volume ls -qf dangling=true)

Docker Cheat Sheet: Docker Compose
Kategoria Komenda / Opis
Zarządzanie

Uruchom Docker Compose jako daemon:
docker compose -f my-compose-file.yaml up -d

Zatrzymaj kontener(y) Compose:
docker compose stop

Usuń zatrzymane kontenery Compose:
docker compose rm -f

Usuń kontener specyficzny dla usługi:
docker compose rm postgres

Śledź wszystkie logi:
docker compose -f docker-compose.yaml logs -f

Docker Cheat Sheet: Docker Service
Kategoria Komenda / Opis
Zarządzanie

Zobacz wszystkie uruchomione usługi:
docker service ls

Sprawdź usługę (JSON):
docker service inspect <nazwa_usługi>

Usuń usługę:
docker service rm <nazwa_usługi>

Zobacz, które węzły Swarm uruchamiają usługę:
docker service ps <ID_usługi>

Skaluj usługę do więcej instancji:
docker service scale <nazwa_usługi>=5 (lub # liczby_instancji)

Docker Cheat Sheet: Swarm
Kategoria Komenda / Opis
Zarządzanie Swarmem

Uruchom Swarm na węźle lidera:
docker swarm init

Węzeł lidera generuje token (wyjście komendy `docker swarm init` lub `docker swarm join-token worker`):

docker swarm join \
  --token <TOKEN> \
  <IP>:2377

Dodaj węzeł do Swarm jako worker:
docker swarm join \ --token <TOKEN> \ <IP>:2377

(Ten węzeł dołączył do Swarm jako worker.)

Uruchom usługę z pliku docker-compose (deploy stack):
docker stack deploy -c docker-compose.yaml myService

Brak komentarzy:

Prześlij komentarz