Docker 🐳 — это инструмент, который упрощает процесс разработки запуска и распространения программного обеспечения.
Основные понятия
Docker Engine — это ядро докера, с помощью него мы создаем и контейнизируем наши приложения. Docker Engine является клиент-серверным приложением, которое состоит из:
- сервера с длительно работающим демоном-процессом
dockerd
, который создает образы, конетйнеры, тома и управляет ими. - API для взаимодействия с этим демоном
- инструмент командной строки (CLI) для взаимодействия с сервером через предоставляемый API.
Dockerfile – файл с инструкциями о том как создать образ (или image).
Docker image – шаблон на основании которого создаются и запускаются контейнеры.
Image представляет из себя просто набор файлов, директорий, символических ссылок, и необходимых инструментов.
Docker container – приложение построенное на основе docker image, которое исполняется в закрытой файловой системе со своим пространством процессов.
Базовые команды
Проверить что докер установлен можно с помощью команды docker -v
:
docker -v
Чтобы запустить контейнер необходимо выполнить команду docker run <метка образа>
, например для запуска ubuntu:
docker run ubuntu
Для запуска контейнера в интерактивном режиме необходимо передать ключ -it
docker run -it ubuntu
Выйти из контейнера можно с помощью команды exit
exit
Посмотреть работающие контейнеры можно командой docker ps
:
docker ps
Посмотреть все образы можно с помощью команды docker images
docker images
Присоединиться к работающему контейнеру можно командой attach
(необходимо указать id контейнера)
docker attach 4e9fa3526059
Остановить контейнер можно командой stop
docker stop 4e9fa3526059
A запустить командой start
docker start 4e9fa3526059
Чтобы запустить контейнер с открытым портом надо передать флаг -p
и указать какой порт операционной системы переадресуем в открытый в контейнере порт (через двоеточие)
docker run -p 8888:80 nginx
Создание Dockerfile
Для указания базового образа используется инструкция FROM
.
Для указания рабочей директории используется инструкция WORKDIR
.
Для копирования файлов инструкция COPY
.
RUN позволяет выполнить определенную команду при построении образа.
CMD является входной точкой для запуска приложения.
Пример Dockerfile для приложения написанного на Go.
FROM golang:1.21
WORKDIR /app
COPY main.go .
RUN go build -o hello-go main.go
CMD ["./hello-go"]