# Как установить Docker на Debian
Docker — распространённый и удобный инструмент для виртуализации. Он позволяет запускать в отдельном контейнере приложение со всеми его зависимостями. Это бывает очень удобно при разработке или тестировании приложения, когда его нужно перенести на новое устройство или другую машину.
В этой инструкции мы расскажем, как установить и запустить Docker на подготовленном к работе VPS под управлением Debian. Мы рассмотрим два варианта установки — классический и из «Пакетов приложений» Джино, создадим первые контейнеры и познакомимся с базовыми принципами работы в Docker.
# Установка Docker
Перед началом установки Docker обновим список пакетов apt и установим несколько дополнительных приложений, которые нам понадобятся в дальнейшей работе:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Теперь добавим GPG-ключ Docker в систему, подключим официальный репозиторий Docker и обновим список репозиториев apt:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt update
После этого убедимся, что при установке Docker будем использовать официальный репозиторий Docker, а не стандартный для Debian:
sudo apt-cache policy docker-ce
# Output
docker-ce:
Installed: (none)
Candidate: 5:20.10.14~3-0~debian-buster
Version table:
*** 5:20.10.14~3-0~debian-buster 500
500 https://download.docker.com/linux/debian buster/stable amd64 Packages
100 /var/lib/dpkg/status
…
На экран будут выведены:
текущая версия Docker
Installed (none)
(в нашем случае её пока нет);версия, которую предлагают установить —
Candidte: 5:20.10.14~3-0~debian-buster
;список доступных для установки версий, если вам нужна более ранняя версия программы.
Мы не будем выбирать какую-то конкретную и запустим установку последней:
sudo apt install docker-ce
После установки Docker начнёт работу автоматически. Проверить, что Docker установился и запущен, можно стандартной командой для сбора системных данных:
sudo systemctl status docker
# Output
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-04-13 13:34:11 +05; 19h ago
Docs: https://docs.docker.com
Main PID: 1905 (dockerd)
Tasks: 16
Memory: 761.6M
CGroup: /system.slice/docker.service
├─1905 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
└─2921 /usr/bin/unpigz -d -c
…
Значение Active: active (running) since…
показывает активный статус Docker. Программа запущена и готова к началу работы.
# Установка Docker из Пакетов приложений Джино
Если ваш VPS расположен на Джино, то вам доступен экспресс-вариант установки Docker.
В разделе меню VPSУправлениеПакеты приложений выберите Docker в разделе «Другое», согласитесь на установку и дождитесь окончания установки — сервис самостоятельно установит последнюю версию Docker и все необходимые зависимости.
После завершения установки Docker дальнейшая работа с ним ничем не отличается от варианта с классической установкой. В частности, проверить его статус можно всё той же командой:
sudo systemctl status docker
# Начало работы с Docker
Чтобы ознакомиться с основными командами работы в Docker и его синтаксисом, достаточно ввести в командной строке docker
. Она запустит встроенную систему помощи и выведет на экран основную информацию: формат написания команды, опции и сами команды:
docker
# Output
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/home/regular/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with
"docker context use")
-D, --debug Enable debug mode
…
Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.8.1-docker)
config Manage Docker configs
…
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
…
Чтобы посмотреть все опции, доступные для определённой команды, достаточно ввести саму команду с добавлением флага --help
. Например:
sudo docker pull –help
# Output
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
# Образы в Docker
Docker-контейнеры создаются на основе образов. Основной источник образов — Docker-Hub (opens new window) — ресурс, где размещают свои образы официальные компании и разработчики. По умолчанию Docker ищет образы именно там.
Как это работает?
Вы ищете образ, который вам нужен, например, по ключевым словам «Ubuntu» или «Wordpress»:
sudo docker search ubuntu
# Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14052 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 283 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 112 [OK]
…
sudo docker search wordpress
# Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
wordpress The WordPress rich content management system… 4678 [OK]
bitnami/wordpress Bitnami Docker Image for WordPress 190 [OK]
bitnami/wordpress-nginx Bitnami Docker Image for WordPress with NGINX 57 [OK]
…
В результате поиска на экран выводится таблица с доступными образами, содержащими в названии Ubuntu или Wordpress. В таблице содержится имя образа (NAME), его описание (DESCRIPTION), рейтинг (STARS), указание на то, официальный это образ от разработчика или нет (OFFICIAL) и сведения о его развёртывании (AUTOMATED).
После выбора нужного образа его нужно скачать (получить в случае с Docker):
sudo docker pull ubuntu
sudo docker pull wordpress
Когда образ скачается, на его основе можно создать контейнер, внутри которого образ будет функционировать.
Начнём с проверки доступных (скачанных) образов:
sudo docker images
# Output
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest 744143078625 6 days ago 605MB
ubuntu latest 825d55fb6340 8 days ago 72.8MB
Команда images
выводит на экран список всех скачанных образов с указанием их метки, ID, даты создания самого образа и занимаемого ими объёма дискового пространства.
Вы можете запустить контейнер на основе любого из этих образов:
sudo docker run -it ubuntu
В данном случае мы добавили комбинацию флагов -it
, чтобы перейти непосредственно в контейнер после его запуска и работать с ним в интерактивном режиме.
После запуска контейнера в консоли появится новый идентификатор:
root@1057058e07ef:/#
Он означает, что мы находимся внутри контейнера 1057058e07ef и в данном случае будем выполнять команды от имени root-пользователя.
Например, можем воспользоваться стандартной командой для обновления репозиториев:
apt update
Находящаяся внутри Docker-контейнера Ubuntu обновит список репозиториев apt в штатном режиме, как если бы она работала на полноценной машине.
Можем установить на Ubuntu в docker-контейнере язык программирования Node.js и после завершения установки проверить его версию:
apt install nodejs
node -v
# Output
v10.19.0
Как видим, операционная система внутри контейнера полноценно функционирует.
Теперь можно создавать новое приложение или новый проект уже внутри Docker-контейнера. Любые изменения внутри контейнера никак не повлияют на основную, управляющую операционную систему и не смогут навредить вашему серверу.