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.yml
up — указать 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
— задаем проверку для сервиса (ссылка)