docker login
Dockerfile
FORM node:11.6.0-alpine
COPY ...
RUN ...
CMD ...
docker build -t piecioshka/demo:1 .
docker rmi piecioshka/demo:1
docker run piecioshka/demo
docker run -it piecioshka/demo
docker run -it -p 8000:3000 piecioshka/demo:1
docker run -it -p 8000:3000 -v ~/projects/test-app:/home/node/app piecioshka/demo:1
docker stop piecioshka/demo:1
docker kill piecioshka/demo:1
docker ps # Tylko uruchomionych
docker ps -a # Wszystkich stworzonych
docker system prune -a
docker events
docker exec -it piecioshka/demo:1 bash
FROM
- źródło budowania obrazuWORKDIR
- ustawienie katalogu w którym będą wykonywane kolejne zadaniaCOPY
- kopiowanie pliku z systemu operacyjnego do obrazuRUN
- uruchomienie polecenia na potrzeby zbudowania obrazuCMD
— uruchomienie polecenia po starcie kontenera💡 Hint: Po instalacji pluginu “Docker” w edytorze Visual Studio Code,
podczas wypełniania pliku Dockerfile
będziemy otrzymywali podpowiedzi.
FROM
Przykład użycia:
FROM node
— Stabilna wersja obrazu ze skonfigurowanym Node.jsFROM busybox
— Uniwersalny obrazFROM node:11.14.0-alpine
— Minimalistyczna wersja obrazu z Alpine LinuxWORKDIR
Przykład użycia:
WORKDIR /home/node/app
WORKDIR /app
COPY
Przykład użycia:
COPY . .
— brak cache-a dockerowegoCOPY package*.json ./
RUN
Przykład użycia:
RUN npm install
CMD
Przykład użycia:
CMD npm run dev
CMD ["npm", "run", "dev"]
Plik zawierający ścieżki do plików i katalogów, które będą ignorowane podczas budowania obrazu.
Zdefiniowanie kontekstu (katalogu z plikiem Dockerfile
)
build: .
Mapowanie portów, przykład:
ports:
- 80:4200
Mapowanie katalogu, przykład:
volumes:
- ./:/app/
# Uruchom kontenery na podstawie już stworzonych obrazów (jeśli nie istnieją zbuduje je)
docker-compose up
# Zbuduje obrazy ponownie, przed wystartowaniem kontenerów
docker-compose up --build
# Zwykłe zbudowanie i uruchomienie kontenera na podstawie obrazu
docker run IMAGE_NAME
# Wyjście z polecenie za pomocą <kbd>Ctrl+C</kbd> zatrzymuje kontener:
docker run -it IMAGE_NAME
# Usuń kontener stworzony z tego obrazu (jeśli istnieje)
docker run --rm IMAGE_NAME
docker stop IMAGE_ID
docker kill IMAGE_ID
# Tylko uruchomione
docker ps
# Wszystkie
docker ps -a
docker diff
Aby uruchomić powłokę bash
na kontenerze o id = CONTAINER_ID
uruchom
następujące polecenie:
docker exec -it CONTAINER_ID bash
docker run -p TARGET:SOURCE IMAGE_NAME
Uruchomienie kontenera z parametrem -v
. Opis parametrów:
TARGET
- port w w systemie operacyjnymSOURCE
- port w aplikacji uruchomionej w kontenerzeIMAGE_NAME
- nazwa obrazu z którego zostanie stworzony kontenerPrzykład:
docker run \
-p 8000:3000 \
piecioshka/demo:2
docker run -v SOURCE:TARGET IMAGE_NAME
Uruchomienie kontenera z parametrem -v
. Opis parametrów:
SOURCE
— katalog na dysku komputeraTARGET
— katalog na kontenerzeIMAGE_NAME
- nazwa obrazu z którego zostanie stworzony kontenerPrzykład:
docker run \
-p 8000:3000 \
-v ~/projects/test-docker-http/:/home/node/app/ \
piecioshka/demo:2
docker run --network=NETWORK_NAME IMAGE_NAME
Współdzielenie tego samego interfejsu sieciowego na kontenerze
NETWORK_NAME
— nazwa sieciIMAGE_NAME
- nazwa obrazu z którego zostanie stworzony kontenerPrzykład:
docker run --network=host busybox
docker build -t NAME PATH
NAME
— nazwa stworzonego obrazu, szablon owner-or-company/imagename:version
PATH
— tzw. context (zwykle zawiera plik Dockerfile
)Przykład:
docker build -t piecioshka/demo:1 .
docker rmi [REPOSITORY:TAG|IMAGE_ID]
Przykład:
docker rmi node:11
docker login
Źródło: https://blog.netapp.com/blogs/containers-vs-vms/
Źródło: https://docs.docker.com/storage/storagedriver/overlayfs-driver/
docker system prune -a
Docker
-aUruchom dwa okna terminala:
W pierwszy uruchom
docker events
W drugim:
docker info
Zaawansowane zarządzenie kontenerami
src/index.js
Dockerfile
.dockerignore
src/index.js
Dockerfile
src/index.js
, czy masz wpływ na odpowiedź