docker images или docker image ls — посмотреть список образов (ссылка, ссылка)
docker rmi <образ> [образ...] или docker image rm <образ> [образ...] — удалить образ(ы) (ссылка, ссылка)
docker run <образ> — поднять контейнер на основе образа (ссылка)
- docker run
--name <имя><образ> — при поднятии присвоить имя контейнеру (ссылка) - docker run
--rm<образ> — удалять контейнер после завершения его работы (ссылка) - docker run
-it<образ> — позволяет «войти» в контейнер во время его создания (ссылка, ссылка) - docker run
-d<образ> — поднять контейнер в фоновом режиме (ссылка)
docker ps — список активных (работающих) контейнеров (ссылка)
- docker ps
-a— список всех контейнеров (ссылка)
docker stop <контейнер> [контейнер...] — остановить работающий(ие) контейнер(ы) (ссылка)
docker start <контейнер> [контейнер...] — запустить остановленный(ые) контейнер(ы) (ссылка)
docker rm <контейнер> [контейнер...] — удалить контейнер(ы) (ссылка)
docker exec <контейнер> команда — запустить команду в работающем контейнер (ссылка)
- docker exec
-it<контейнер>bash— запустить bash процесс и «войти» в контейнер (ссылка)
FROM — задаем базовый образ, на основе которого собираем новый (ссылка)
COPY — копируем файл с нашей файловой системы в файловую систему контейнеров (ссылка)
ADD — добавляем файл или ссылку с нашей файловой системы в образ (ссылка)
RUN — выполняем команду (ссылка)
WORKDIR — устанавливаем рабочую директорию (ссылка)
ENTRYPOINT — задаем точку входа для запуска контейнера (ссылка)
CMD — задаем точку входа для запуска контейнера (ссылка)
Со списком инструкций можно ознакомиться в документации (ссылка).
Несмотря на то, что и ENTRYPOINT, и CMD отвечают за запуск программы в контейнере, они используются в разных ситуациях. Особенно это касается случая, когда в одном докерфайле используются обе инструкции одновременно (ссылка, ссылка).
Полезно будет заглянуть сюда и сюда.
docker build <путь, где лежит Dockerfile> — создать образ на основе Dockerfile (ссылка)
- docker build
-t <имя_образа:тег><путь> — создать образ с именем и тегом (ссылка)
Volume and Bind mount
docker volume ls — вывести список вольюмов (ссылка)
docker volume create <название> — создать вольюм (ссылка)
docker volume rm <название> — удалить вольюм (ссылка)
docker volume prune — удалить вольюмы, которые не используются контейнерами (ссылка)
docker run -v <полный_путь_на_хосте>:<полный_путь_в_контейнере> <образ>
docker run -v <название_вольюма>:<полный_путь_в_контейнере> <образ>
docker run -v <полный_путь_на_хосте>:<полный_путь_в_контейнере>:ro <образ>
ENV — инструкция в Dockerfile, которая позволяет задавать переменные окружения в контейнерах (ссылка).
- Не задавайте через эту инструкцию секретные данные
docker run -e <НАЗВАНИЕ_ПЕРЕМЕННОЙ>=<значение> <образ> — позволяет задать переменную окружения в конкретном контейнере (ссылка).
docker logs <контейнер> — позволяет вытащить логи из контейнера (ссылка)
- docker logs
-f<контейнер> — не отключаемся от контейнера - docker logs
-f<контейнер> — не отключаемся от контейнера
EXPOSE — инструкция в Dockerfile, которая позволяет сообщить пользователю, какой(ие) порт(ы) слушает приложение внутри контейнера. Не прокидывает порты на хост (ссылка)
docker run -p <порт_на_хосте>:<порт_в_контейнере> <образ> — связывает порт внутри контейнера с портом на хосте (ссылка).
docker run -p <IP_адрес_на_хосте>:<порт_на_хосте>:<порт_в_контейнере> <образ> — по умолчанию адрес на хосте задается 0.0.0.0. При поднятии можно изменить этот адрес.
Например: docker run -p 127.0.0.1:80:80 nginx
docker network ls — список сетей (ссылка)
docker network create — создать сеть (ссылка)
docker network rm — удалить сеть (ссылка)
docker run --net=<название_сети> <образ> — подключаем контейнер к сети (ссылка, ссылка)
docker inspect <название_или_ID_объекта> — получить информацию об объектах докера (контейнер, образ, вольюм, сеть) (ссылка)
Networking overview,
Docker networking is CRAZY!!,
Сети Docker изнутри
Этапы задаются при помощи нескольких инструкций FROM.
Из одного этапа сборки в другой можно копировать артефакты при помощи COPY --from=.
FROM <образ> AS builder
. . .
FROM <образ>
. . .
COPY --from=builder <путь_в_сборке_builder> <путь_в_текущей_сборке>
. . .
docker-compose ps — список контейнеров (ссылка)
docker-compose up — поднять приложение (ссылка)
- docker-compose up
<сервис>— поднять конкретный контейнер - docker-compose up
-d— поднять контейнеры в фоновом режиме - docker-compose
-f docker-compose.dev.ymlup — указать docker-compose.yaml файл (ссылка)
docker-compose stop — остановить поднятые контейнеры (ссылка)
docker-compose start — запустить остановленные контейнеры (ссылка)
docker-compose down — остановить и удалить контейнеры и сеть (ссылка)
build — собираем образ, на основе которого поднимем сервис (ссылка)
image — образ, на основе которого поднимем сервис (ссылка)
container_name — название контейнера в сервисе (ссылка)
volumes — список вольюмов для сервиса (ссылка)
environment — переменные окружения в сервисе (ссылка)
networks — список сетей, к которым нужно подключить сервис (ссылка)
ports — список портов, которые нужно прокинуть у сервиса (ссылка)
restart — указываем поведение сервиса при падении (ссылка)
deploy/replicas — указываем количество контейнеров у сервиса (ссылка, ссылка)
depends_on — определяем зависимость между сервисами (ссылка)
healthcheck — задаем проверку для сервиса (ссылка)