Запустить контейнер с ubuntu в docker

Обновлено: 05.07.2024

Клиент Docker предназначен для облегчения управления приложениями внутри контейнеров. Так, он дает пользователю возможность отдельно запускать программы в процессах с изолированными ресурсами. Это напоминает работу в виртуальных машинах, однако контейнеры отличаются более низкой требовательностью к ресурсам, высокой портируемостью и большей зависимостью от операционной системы.

Процесс установки Docker

Чтобы выполнить запуск контейнера, понадобится иметь под рукой настроенный сервер с установленным дистрибутивом Linux. В операционной системе необходимо создать обычного пользователя (не root) и установить фаервол.

Работу с Docker рассмотрим на примере Ubuntu, который является одним из наиболее популярных дистрибутивов для сервера.

Заранее стоит отметить, что в репозитории Ubuntu не всегда предлагается последняя версия Docker. Поэтому этот сервис предпочтительнее устанавливать непосредственно из его официального репозитория. Соответственно, следует добавить в систему новый репозиторий, ввести ключ GPG для проверки действительности скачиваемой версии и лишь затем приступать к установке.

Как запустить Docker контейнер на Linux

Работа с командой Docker без прав суперпользователя

В дефолтных настройках предусмотрено, что для запуска Docker необходимо иметь права root-пользователя или пользователя из группы docker, создаваемой автоматически во время установки сервиса.

Если попробовать запустить в терминале Docker без этих прав или, не являясь пользователем группы docker, появится ситуация, когда не запускается контейнер.
Поэтому если нет желания постоянно набирать sudo перед запуском команды, стоит добавить своего пользователя в указанную выше группу:

Чтобы применить изменения, потребуется выйти с заново войти на сервер. Можно также воспользоваться этой командой:

Продолжить работу можно будет после ввода пароля пользователя. Проверить, что добавление пользователя прошло успешно, можно командой (пользователь sammy):

Как запустить Docker контейнер на Linux

При желании добавить выбранного пользователя в группу, можно указать его имя:

Последующие шаги предполагают, что пользователь уже добавил себя в группу docker. Если нет желания это делать, перед командами необходимо набирать sudo .

Как пользоваться командами Docker

С помощью команды docker можно пользоваться различными опциями, а также командами с аргументами. Ниже показан ее синтаксис:
docker [option] [command] [arguments]
Чтобы ознакомиться со всеми подкомандами, можно набрать следующее:

Как запустить Docker контейнер на Linux

Здесь показан список из Docker 18.

Можно получить информацию по использованию выбранной команды:

Как запустить Docker контейнер на Linux

Для получения полной информации по Docker потребуется ввести следующее:

Как запустить Docker контейнер на Linux

Как работать с образами Docker

Запуск контейнеров выполняется из образов. Изначально Docker берет образы в хабах Docker Hub (реестр образов, поддерживаемый разработчиком). Любой имеет возможность создавать и загружать собственные образы. Так что для большей части дистрибутивов и программ уже имеются необходимые образы в Docker Hub.

Приведенная ниже команда позволяет проверить, есть ли возможность получить доступ и скачивать образы в Docker Hub (на примере образа hello-world):

Этот вывод данных указывает, что Docker работает правильно:

Как запустить Docker контейнер на Linux

Сначала сервис не мог найти образ hello-world на локальной машине, из-за чего ему приходилось загрузить образ в хабе (репозитории по умолчанию). После его скачивания Docker создал отдельный контейнер из образа и уже затем запускал в нем программу контейнере.

Представленные в хабе образы можно найти при помощи команд docker и search. К примеру, найти образ Ubuntu можно следующим образом:

Как запустить Docker контейнер на Linux

Далее скрипт просмотрит содержимое хаба и покажет все образы, соответствующие заданным критериям. В предложенном примере результат будет примерно таков:

Строчка OK в столбце OFFICIAL говорит о том, что образ создан и его поддержка осуществляется компанией, ответственной за этот проект. Выбрав требуемый образ, его можно скачать на компьютер, используя подкоманду pull.

Загрузка официального образа Ubuntu на компьютер выполняется такой командой:

Как запустить Docker контейнер на Linux

По завершении операции отобразится такой результат:

Когда образ будет скачан, станет возможным выполнить запуск контейнера из образа при помощи команды run. На примере hello-world видно, что если после ввода run образ не был скачан, сначала клиент загрузит его и уже запустит контейнер с образом.

Чтобы посмотреть, какие образы были загружены на компьютер, используется команда:

Как запустить Docker контейнер на Linux

Результат будет похожим на следующий:

Ниже можно увидеть, что образы для запуска контейнеров можно менять и использовать при создании других образов. Причем последние можно загрузить в Docker Hub или другие репозитории. Далее будет рассмотрено более подробно, как работать с контейнерами.

Запуск контейнера Docker

Командная строка изменится, указывая на переход в контейнер, и будет выглядеть таким образом:

Как запустить Docker контейнер на Linux

Следует обратить внимание, что также отображается идентификатор контейнера. Здесь это 2c88170e5391. Он понадобится позже, чтобы сообщить клиенту, какой именно удалить контейнер.

После этого можно запустить любую команду в контейнере. К примеру, можно обновить базу данных пакетов. Для этого нет необходимости пользоваться командой sudo, поскольку работа ведется от имени пользователя с root-правами:

Как запустить Docker контейнер на Linux

Затем появится возможность установки приложений. Рассмотрим пример установки Node.js:

Как запустить Docker контейнер на Linux

Эта команда выполнит установку Node.js в контейнер, используя репозиторий Ubuntu. По завершении установки можно проверить, была ли она успешно выполнена:

Будет показан номер текущей версии Node.js:

Как запустить Docker контейнер на Linux

Проведенные изменения в контейнере распространяются только на него. Завершить работу с контейнером можно командой exit .

Команды для управления контейнерами

Со временем после работы с Docker на локальной машине соберется достаточное количество активных и неактивных контейнеров. Для просмотра запущенных контейнеров применяется команда:

Как запустить Docker контейнер на Linux

Система выведет примерные результаты:

В этой инструкции разбирался запуск двух контейнеров — с образов hello-world и ubuntu. Хотя сейчас они не активные, но уже расположены в системе. Для просмотра находящихся в системе контейнеров нужно запустить docker ps, добавив параметр -a:

Как запустить Docker контейнер на Linux

В терминале отобразится примерный вывод:

Для просмотра последних созданных контейнеров используется опция -l:

Как запустить Docker контейнер на Linux

Чтобы запустить остановленный контейнер, необходимо ввести docker start и далее указать идентификатор или имя контейнера. Так выглядит запуск контейнера 2c88170e5391:


Контейнер будет запущен и чтобы просмотреть его статус, используется команда docker ps :

Чтобы выключить активный контейнер, используется команда docker stop с последующим указанием его идентификатора или имени. Здесь уже потребуется воспользоваться именем, которое предоставил контейнеру Docker (peaceful_minsky):

Также может потребоваться перезапустить контейнер, не отключая его. Это можно сделать командой:

Отдельного внимания заслуживает запуск контейнера docker compose. Так, после смены настроек в файле docker-compose.yml (например, проброс порта) изменения не выполнятся автоматически. Вдобавок, команда restart также не поможет и потребуется выполнить пересборку контейнера, применив для этого команду build. Другими словами, он будет заново создан. Выполнить операцию можно следующей командой:

После чего отобразится похожий вывод:

Как запустить Docker контейнер на Linux

Потребуется пара секунд, чтобы перезапуск контейнера полностью завершился, хотя в действительности Docker осуществив намного больше операций. То есть, собрал новый образ, создал новый контейнер на его основе, остановил старый, запустил новый и удалил старый.

Когда контейнер уже не нужен для дальнейшей работы, его можно удалить, набрав в терминале docker rm с добавлением его имени или идентификатора. Для поиска этих данных, которые связаны с hello-world, вводится команда:

Как запустить Docker контейнер на Linux

После чего можно приступать к удалению контейнера.

Как запустить Docker контейнер на Linux

Помимо указанных выше команд из существующих контейнеров можно создавать образы для создания новых. Об этом речь пойдет далее.

Как сохранить изменения в новый образ?

Во время запуска контейнера из существующего образа у пользователя есть возможность создавать или удалять файлы, аналогично работе на виртуальной машине. При этом изменения будут распространяться только в определенном контейнере. Доступна и возможность запуска с последующей остановкой контейнера, но после его удаления с помощью docker rm будут утеряны внесенные изменения.

Соответственно, следует ознакомиться со способом сохранения текущего контейнера как нового образа.

По завершении инсталляции Node.js в контейнере Ubuntu, на компьютере работает загруженный из образа контейнер. При этом он будет отличаться от использованного для его создания образа. В свою очередь, пользователю может понадобиться уже контейнер Node.js, чтобы использовать его при создании для новых образов.

Соответственно, следует сохранить результаты в текущем образе предложенной ниже командой:

Если вы не занимались до этого созданием новых репозиториев в Docker Hub, имя создаваемого репозитория по умолчанию будет названо именем вашего пользователя в Docker Hub.

К примеру, с именем пользователя admin и идентификатором 2c8ec46adae1 команда должна иметь следующий вид:

Как запустить Docker контейнер на Linux

После того, как образ будет подтвержден (commit) он сохраняется на компьютере локально. Далее будет рассмотрен пример его отправки в репозиторий Docker, чтобы он стал доступным и для других пользователей. Если же посмотреть список образов по завершении этой операции, в нем будет добавлен новый образ, причем исходный также останется на месте:

Как запустить Docker контейнер на Linux

Ниже показан примерный результат проверки:

В предложенном выводе ubuntu-nodejs является созданным образом на базе уже имеющегося ubuntu, загруженного в Docker Hub. Проведенные изменения можно увидеть по тому, насколько изменился размер образа. Поскольку изменение касалось только инсталляции NodeJS, при необходимости запуска Ubuntu с этим предустановленным приложением, можно воспользоваться созданным образом.

Отправка контейнеров в реестр

Завершающий этап — сохранение созданных образов в базу Docker Hub или другой репозиторий, откуда их может скачать любой желающий. Чтобы получить такую возможность, предварительно нужно создать аккаунт.

Отправка образов в репозиторий начинается с авторизации на Docker Hub.

Чтобы вход был успешно осуществлен, потребуется ввести пароль Docker Hub. Если он правильный, авторизация пройдет успешно.

Здесь важно знать, что если в реестре Docker имя пользователя отличается от локального, используемого при создании образа, обязательно нужно привязать этот образ к имени учетной записи в хабе. На примере контейнера с NodeJS команда привязки будет выглядеть так:

После чего можно приступать к загрузке образа на сервер:

Что касается разбираемого примера ubuntu-nodejs, для отправки его в реестр sammy следует ввести эту команду:

Загрузка образа может занять время. Когда образ будет находиться в репозитории, его название появится в списке, открываемом в панели управления вашего аккаунта.
В таком случае необходимо снова попытаться сделать вход с использованием docker login и загрузить образ. Наконец, остается проверить, что он был добавлен успешно. Затем можно набрать в терминале docker pull admin/ubuntu-nodejs, чтобы воспользоваться образом на новой машине и пользоваться им при создании новых контейнеров.

Автозагрузка контейнеров

Часто встречается ситуация, когда контейнеры останавливаются вследствие определенных факторов. Простейший пример – произошла перезагрузка сервера. Чтобы избавиться от необходимости вручную запускать их, можно настроить автозапуск контейнеров. Для этого следует создать текстовые файлы со специальным форматом для сервиса systemcmd. Рассмотрим пример их создания на примере контейнера my-db, введя в терминал команду:

В пустой файл необходимо добавить следующий код и сохранить его:

После этого остается перезапустить демон systemcmd и включить автозагрузку контейнера mydb, набрав в терминале поочередно команды:

Технология Docker набирает всё большую популярность среди разработчиков и DevOps-специалистов в наши дни, поскольку позволяет без особого труда настроить различные окружения один раз, а затем воспроизводить их на, казалось бы, совсем не совместимом оборудовании. Но начнём мы наш цикл статей о Docker с азов.

В сегодняшней статье мы поговорим о создании контейнеров и, соответственно, об их запуске. В Docker контейнер представляет собой окружение для выполнения какого-либо одного процесса. Это изолированная среда, в которой есть всё необходимое для выполнения нужного процесса, и нет ничего лишнего. Создание контейнера Docker выполняется в момент его запуска, и эти процессы запускаются с помощью команды docker run. Давайте сначала рассмотрим её синтаксис и опции.

Синтаксис и опции docker run

Синтаксис команды docker run похож на синтаксис других команд Linux и выглядит следующим образом:

$ docker run опции образ команда

Утилите обязательно надо передать образ, на основе которого будет создан контейнер. Образ может быть локальным или указывать на образ, который надо загрузить из сети. Мы рассмотрим это в примерах ниже. Опции позволяют настроить контейнер и параметры его запуска более детально. Сама команда позволяет переопределить программу, которая выполняется после запуска контейнера. Например, выполнив /bin/bash, вы можете подключится к самому контейнеру.

Рассмотрим основные опции утилиты, которые мы будем использовать. Опций очень много, поэтому я не могу перечислить их все:

  • -d - запускает контейнер в фоновом режиме;
  • -t - прикрепляет к контейнеру псевдо-TTY-консоль;
  • -i - выводит в терминал STDIN поток контейнера;
  • --name - имя контейнера, по которому потом можно будет к нему обращаться;
  • --dns - устанавливает DNS-серверы для контейнера;
  • --network - тип сети для контейнера, может принимать такие значения: bridge (используется по умолчанию), none, host. Также можно передать идентификатор сети Docker, к которой надо подключится;
  • --add-host - добавляет строчку в /etc/hosts;
  • --restart - указывает, когда надо перезапускать контейнер. Возможные значения: no, on-failure, always, unless-stopped;
  • --rm - удаляет контейнер после завершения его работы;
  • -m, --memory - количество оперативной памяти, доступное Docker-контейнеру;
  • --memory-swap - объём памяти раздела подкачки, доступный в контейнере;
  • --cpus - количество ядер процессора, доступных в контейнере;
  • --shm-size - размер файла /dev/shm;
  • --device - позволяет монтировать устройства из папки /dev в контейнер;
  • --entrypoint - позволяет переопределить скрипт, который выполняется при запуске контейнера, перед запуском основной команды;
  • --expose - позволяет пробросить несколько портов из контейнера в хост-систему;
  • -P - пробрасывает все порты контейнера в хост-систему;
  • -p - переносит все порты контейнера в хост-систему без смены номера порта;
  • --link - позволяет настроить связь контейнеров Docker;
  • -e - добавляет переменную окружения в контейнер;
  • -v, --volume - позволяет монтировать папки хоста в контейнер;
  • -w - изменяет рабочую директорию контейнера.

Это основные опции, которые мы будем использовать в этой статье, а теперь давайте рассмотрим на примерах, как создать контейнер Docker в Linux.

Создание контейнера Docker

1. Обычный контейнер

Чтобы создать и запустить контейнер с параметрами, заданными в образе по умолчанию, просто запустите команду без параметров. Давайте воспользуемся контейнером hello-world, который как раз для этого и предназначен:

docker run hello-world


Для поиска уже готовых образов для контейнеров можно использовать веб-сайт DockerHub. Здесь есть образы для большинства дистрибутивов и системных сервисов, таких, как Nginx, Apache, PHP-FPM, PhpMyAdmin и многих других.


Вверху отображается название контейнера, а чуть ниже - доступные версии. При создании контейнера версия записывается через двоеточие. Например, давайте создадим и запустим контейнер с Ubuntu 18.04. Чтобы к контейнеру было легко получить доступ потом, зададим ему имя с помощью опции --name:

docker run --name Ubuntu1804 ubuntu:18.04

2. Подключение к контейнеру

Образ Ubuntu 18.04, на основе которого мы создали контейнер выше, не содержит команды, которая бы постоянно выполнялась, поэтому если вы попытаетесь подключится к нему с помощью команды docker exec, то получите ошибку: You cannot attach to a stopped container, start it first:

docker attach Ubuntu1804


Так происходит потому, что окружение не может работать без основного процесса, для которого и создан контейнер. Пока работает процесс, будет работать и контейнер. Как только процесс завершён, контейнер завершается, и созданный нами ранее контейнер полностью бесполезен. Вы не сможете к нему подключится, потому что он будет падать сразу же после старта, а к упавшему контейнеру подключится нельзя. Его можно удалить:

docker rm Ubuntu1804

А нам надо создать контейнер с командой, которая будет выполняться. Для этого просто передайте команду после имени образа, например /bin/bash. Чтобы контейнер был доступен интерактивно, создавайте его с опциями -i и -t:

docker run -it --name Ubuntu1804 ubuntu:18.04 /bin/bash


Теперь вы в контейнере и можете выполнять действия прямо в изолированном окружении.

3. Переменные окружения

Очень часто для изменения настроек контейнера используются переменные окружения. Вы задаёте какую-нибудь переменную окружения, а затем её значение используется вашей программой в самом контейнере для выполнения различных действий. Для задания переменных окружения используется опция -e. Запуск контейнера Docker:

docker run -it -e "FOO=bar" --name Ubuntu1804_2 ubuntu:18.04 /bin/bash


4. Монтирование папок и хранилищ

Когда вам нужно, чтобы контейнер мог работать с исходными кодами программы или с часто изменяемыми данными, рекомендую сделать специальную настройку - будет неудобно каждый раз копировать информацию в контейнер. Куда проще примонтировать папку хоста в контейнер, и все изменения исходников будут сразу же доступны в контейнере. Это очень удобно. Для монтирования папки следует передать её опции -v. Например, примонтируем папку

/test_docker в контейнер:

docker run -it -v "

/test_docker:/mnt" --name Ubuntu1804_3 ubuntu:18.04 /bin/bash


Хранилища позволяют монтировать в контейнер виртуальный диск, который не удаляется при удалении контейнера. Такое хранилище будет автоматически создано, если передать не существующую папку, а имя для нового хранилища:

docker run -it -v docker_volume:/mnt --rm --name Ubuntu1804_4 ubuntu:18.04 /bin/bash


Напоминаю, что опция --rm удаляет контейнер сразу же после того, как он завершит свою работу. Посмотреть список доступных хранилищ можно командой:

docker volume list


5. Порты контейнера

Если вам нужно получить доступ к какому-либо сервису контейнера по порту, например к веб-интерфейсу, этот порт надо пробросить в хост-систему. Для этого используется опция -p. Давайте установим Nginx и пробросим его порт в хост-систему:

docker run --name Nginx -p 8080:80 -d nginx


6. Связывание контейнеров

Связывание контейнеров позволяет настроить взаимодействие между ними. Связанный контейнер будет доступен по сети по его имени. Соответствующая строчка будет автоматически добавлена в файл /etc/hosts контейнера. Для связывания используется опция --link. Чтобы закрепить знания, полученные выше, давайте создадим контейнер с базой данных MySQL, а затем свяжем его с PhpMyAdmin.

Сначала создаём контейнер MySQL с постоянным хранилищем в /var/lib/mysql. В переменных окружения ему надо передать пароль суперпользователя. Какие переменные окружения ожидает получить контейнер - эту информацию обычно можно найти на странице контейнера на DockerHub. Используйте опцию -d, чтобы контейнер запустился в фоновом режиме:

docker run -v mysql_volume:/var/lib/mysql --name MySQL -e MYSQL_ROOT_PASSWORD=passwd -d mysql:8.0


Затем создаём контейнер с PhpMyAdmin для доступа к этой базе данных и связываем с ним контейнер MySQL под именем db:

docker run --name PhpMyAdmin -d --link MySQL:db -p 8080:80 phpmyadmin/phpmyadmin

Также здесь мы пробрасываем порт 80 в хост-систему, чтобы получить доступ к веб-интерфейсу. Теперь можно проверять в браузере. Всё работает.


7. Сеть для контейнеров

Контейнеры можно не связывать. Если надо объединить три и больше контейнеров между собой, то куда удобнее сразу связать их в одну общую сеть, чем создавать множество подключений для каждого из этих контейнеров. Все объекты в одной сети будут иметь доступ к друг другу по их имени. Сначала необходимо создать сеть:

docker network create -d bridge docker_network

Посмотреть список созданных сетей можно командой:

docker network list


Теперь можно её использовать. Объединим с помощью сети наш MySQL- и PhpMyAdmin-сервера. Для этого надо их остановить и удалить:

docker stop MySQL
docker stop PhpMyAdmin

docker rm MySQL
docker rm PhpMyadmin

docker run -v mysql_volume:/var/lib/mysql --network docker_network --name MySQL -e MYSQL_ROOT_PASSWORD=passwd -d mysql:8.0

А для PhpMyAdmin теперь надо передать хост, на котором расположена база данных в переменной окружения PMA_HOST:

docker run --name PhpMyAdmin -d --network docker_network -e PMA_HOST=MySQL -p 8080:80 phpmyadmin/phpmyadmin


Выводы

В этой статье мы рассмотрели, как запустить контейнер Docker и настроить его параметры. Как видите, Docker может быть очень полезным для быстрого разворачивания рабочих окружений. Но редко для этих целей используют саму команду docker run. Обычно используется инструмент docker-compose. Интересно ли вам прочитать об этом инструменте? Напишите в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Docker — это приложение, упрощающее процесс управления процессами приложения в контейнерах. Контейнеры позволяют запускать приложения в процессах с изолированными ресурсами. Они похожи на виртуальные машины, но более портативные, более эффективно расходуют ресурсы и в большей степени зависят от операционной системы хоста.

Подробное описание различных компонентов контейнера Docker см. в статье Экосистема Docker: знакомство с базовыми компонентами.

В этом обучающем модуле мы установим и начнем использовать Docker Community Edition (CE) на сервере Ubuntu 20.04. Вы самостоятельно установите Docker, поработаете с контейнерами и образами и разместите образ в репозитории Docker.

Предварительные требования

Для выполнения этого руководства вам потребуется следующее:

  • Один сервер Ubuntu 20.04, настроенный в соответствии с руководством по начальной настройке сервера Ubuntu 20.04, включая пользователя non-root user с привилегиями sudo и брандмауэр.
  • Учетная запись на Docker Hub, если вы хотите создавать собственные образы и загружать их на Docker Hub, как показано в шагах 7 и 8.

Шаг 1 — Установка Docker

Пакет установки Docker, доступный в официальном репозитории Ubuntu, может содержать не самую последнюю версию. Чтобы точно использовать самую актуальную версию, мы будем устанавливать Docker из официального репозитория Docker. Для этого мы добавим новый источник пакета, ключ GPG от Docker, чтобы гарантировать загрузку рабочих файлов, а затем установим пакет.

Первым делом обновите существующий список пакетов:

Добавьте ключ GPG для официального репозитория Docker в вашу систему:

Добавьте репозиторий Docker в источники APT:

Потом обновите базу данных пакетов и добавьте в нее пакеты Docker из недавно добавленного репозитория:

Убедитесь, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:

Вы должны получить следующий вывод, хотя номер версии Docker может отличаться:

Обратите внимание, что docker-ce не установлен, но является кандидатом на установку из репозитория Docker для Ubuntu 20.04 (версия focal ).

Docker должен быть установлен, демон-процесс запущен, а для процесса активирован запуск при загрузке. Проверьте, что он запущен:

Вывод должен выглядеть примерно следующим образом, указывая, что служба активна и запущена:

После установки Docker у вас будет доступ не только к службе Docker (демон-процесс), но и к утилите командной строки docker или клиенту Docker. Мы узнаем, как использовать команду docker позже в этом обучающем руководстве.

Шаг 2 — Настройка команды Docker без sudo (необязательно)

По умолчанию команда docker может быть запущена только пользователем root или пользователем из группы docker, которая автоматически создается при установке Docker. Если вы попытаетесь запустить команду docker без префикса sudo или с помощью пользователя, который не находится в группе docker, то получите следующий вывод:

Если вы не хотите каждый раз вводить sudo при запуске команды docker , добавьте свое имя пользователя в группу docker :

Чтобы применить добавление нового члена группы, выйдите и войдите на сервер или введите следующее:

Вы должны будете ввести пароль вашего пользователя, чтобы продолжить.

Проверьте, что ваш пользователь добавлен в группу docker, введя следующее:

Если вам нужно добавить пользователя в группу docker , для которой вы не выполнили вход, объявите имя пользователя явно, используя следующую команду:

В дальнейшем в статье подразумевается, что вы запускаете команду docker от имени пользователя в группе docker. В обратном случае вам необходимо добавлять к командам префикс sudo .

Давайте перейдем к знакомству с командой docker .

Шаг 3 — Использование команды Docker

Использование docker подразумевает передачу ему цепочки опций и команд, за которыми следуют аргументы. Синтаксис имеет следующую форму:

Чтобы просмотреть все доступные субкоманды, введите:

Для 19-й версии Docker полный список субкоманд выглядит следующим образом:

Чтобы просмотреть параметры, доступные для конкретной команды, введите:

Чтобы просмотреть общесистемную информацию о Docker, введите следующее:

Давайте изучим некоторые из этих команд. Сейчас мы начнем работать с образами.

Шаг 4 — Работа с образами Docker

Контейнеры Docker получают из образов Docker. По умолчанию Docker загружает эти образы из Docker Hub, реестр Docker, контролируемые Docker, т.е. компанией, реализующей проект Docker. Любой может размещать свои образы Docker на Docker Hub, поэтому большинство приложений и дистрибутивов Linux, которые вам потребуется, хранят там свои образы.

Чтобы проверить, можно ли получить доступ к образам из Docker Hub и загрузить их, введите следующую команду:

Данный вывод говорит о том, что Docker работает корректно:

Вы можете выполнять поиск доступных на Docker Hub с помощью команды docker с субкомандой search . Например, чтобы найти образ Ubuntu, введите:

Скрипт пробежится по Docker Hub и вернет список всех образов с именами, совпадающими со строкой запроса. В данном случае вывод будет выглядеть примерно следующим образом:

В столбце OFFICIAL OK указывает на образ, созданный и поддерживаемый компанией, реализующей проект. После того как вы определили образ, который хотели бы использовать, вы можете загрузить его на свой компьютер с помощью субкоманды pull .

Запустите следующую команду, чтобы загрузить официальный образ ubuntu на свой компьютер:

Вывод должен выглядеть следующим образом:

После того как образ будет загружен, вы сможете запустить контейнер с помощью загруженного образа с помощью субкоманды run . Как вы уже видели на примере hello-world , если образ не был загружен, когда docker выполняется с субкомандой run , клиент Docker сначала загружает образ, а затем запускает контейнер с этим образом.

Чтобы просмотреть образы, которые были загружены на ваш компьютер, введите:

Вывод команды должен выглядеть примерно следующим образом:

Как вы увидите далее в этом обучающем руководстве, образы, которые вы используете для запуска контейнеров, можно изменить и использовать для создания новых образов, которые затем могут быть загружены (помещены) на Docker Hub или другие реестры Docker.

Давайте более подробно рассмотрим, как запускаются контейнеры.

Шаг 5 — Запуск контейнеров Docker

В качестве примера мы запустим контейнер с самым последним образом образ Ubuntu. Сочетание переключателей -i и -t предоставляет вам доступ к интерактивной командной оболочке внутри контейнера:

Необходимо изменить приглашение к вводу команды, чтобы отразить тот факт, что вы работаете внутри контейнера, и должны иметь следующую форму:

Обратите внимание на идентификатор контейнер в запросе команды. В данном примере это d9b100f2f636 . Вам потребуется этот идентификатор для определения контейнера, когда вы захотите его удалить.

Теперь вы можете запустить любую команду внутри контейнера. Например, сейчас мы обновим базу данных пакетов внутри контейнера. Вам не потребуется начинать любую команду с sudo , потому что вы работаете внутри контейнера как root-пользователь:

После этого вы можете установите любое приложение внутри контейнера. Давайте установим Node.js:

Эта команда устанавливает Node.js внутри контейнера из официального репозитория Ubuntu. После завершения установки проверьте, что Node.js был установлен успешно:

Вы увидите номер версии, отображаемый в терминале:

Любые изменения, которые вы вносите внутри контейнера, применяются только к контейнеру.

Чтобы выйти из контейнера, введите exit .

Далее мы рассмотрим управление контейнерами в нашей системе.

Шаг 6 — Управление контейнерами Docker

После использования Docker в течение определенного времени, у вас будет много активных (запущенных) и неактивных контейнеров на компьютере. Чтобы просмотреть активные, используйте следующую команду:

Вывод будет выглядеть примерно следующим образом:

В этом обучающем руководстве вы запустили два контейнера: один из образа hello-world и другой из образа ubuntu . Оба контейнера больше не запущены, но все еще существуют в вашей системе.

Чтобы просмотреть все контейнеры — активные и неактивные, воспользуйтесь командой docker ps с переключателем -a :

Вывод будет выглядеть следующим образом:

Чтобы просмотреть последний созданный вами контейнер, передайте переключатель -l :

Чтобы запустить остановленный контейнер, воспользуйтесь docker start с идентификатором контейнера или именем контейнера. Давайте запустим контейнер на базе Ubuntu с идентификатором 1c08a7a0d0e4 :

Контейнер будет запущен, а вы сможете использовать docker ps , чтобы просматривать его статус:

Чтобы остановить запущенный контейнер, используйте docker stop с идентификатором или именем контейнера. На этот раз мы будем использовать имя, которое Docker присвоил контейнеру, т.е. quizzical_mcnulty :

После того как вы решили, что вам больше не потребуется контейнер, удалите его с помощью команды docker rm , снова добавив идентификатор контейнера или его имя. Используйте команду docker ps -a , чтобы найти идентификатор или имя контейнера, связанного с образом hello-world , и удалить его.

Вы можете запустить новый контейнер и присвоить ему имя с помощью переключателя --name . Вы также можете использовать переключатель ​--rm , чтобы создать контейнер, который удаляется после остановки. Изучите команду docker run help , чтобы получить больше информации об этих и прочих опциях.

Контейнеры можно превратить в образы, которые вы можете использовать для создания новых контейнеров. Давайте посмотрим, как это работает.

Шаг 7 — Внесение изменений в контейнер для образа Docker

После запуска образа Docker вы можете создавать, изменять и удалять файлы так же, как и с помощью виртуальной машины. Эти изменения будут применяться только к данному контейнеру. Вы можете запускать и останавливать его, но после того как вы уничтожите его с помощью команды docker rm , изменения будут утрачены навсегда.

Данный раздел показывает, как сохранить состояние контейнера в виде нового образа Docker.

После установки Node.js внутри контейнера Ubuntu у вас появился контейнер, запускающий образ, но этот контейнер отличается от образа, который вы использовали для его создания. Но позже вам может снова потребоваться этот контейнер Node.js в качестве основы для новых образов.

Затем внесите изменения в новый экземпляр образа Docker с помощью следующей команды.

Например, для пользователя sammy с идентификатором контейнера d9b100f2f2f6 команда будет выглядеть следующим образом:

Когда вы вносите образ, новый образ сохраняется локально на компьютере. Позже в этом обучающем руководстве вы узнаете, как добавить образ в реестр Docker, например, на Docker Hub, чтобы другие могли получить к нему доступ.

Список образов Docker теперь будет содержать новый образ, а также старый образ, из которого он будет получен:

Вывод будет выглядеть следующим образом:

В данном примере ubuntu-nodejs является новым образом, который был получен из образа ubuntu на Docker Hub. Разница в размере отражает внесенные изменения. В данном примере изменение состояло в том, что NodeJS был установлен. В следующий раз, когда вам потребуется запустить контейнер, использующий Ubuntu с предустановленным NodeJS, вы сможете использовать новый образ.

Вы также можете создавать образы из Dockerfile , что позволяет автоматизировать установку программного обеспечения в новом образе. Однако это не относится к предмету данного обучающего руководства.

Теперь мы поделимся новым образом с другими, чтобы они могли создавать из него контейнеры.

Шаг 8 — Загрузка образов Docker в репозиторий Docker

Следующим логическим шагом после создания нового образа из существующего является предоставление доступа к этому образу нескольким вашим друзьям или всему миру на Docker Hub или в другом реестре Docker, к которому вы имели доступ. Чтобы добавить образ на Docker Hub или любой другой реестр Docker, у вас должна быть там учетная запись.

Данный раздел посвящен добавлению образа Docker на Docker Hub. Чтобы узнать, как создать свой собственный частный реестр Docker, ознакомьтесь со статьей Настройка частного реестра Docker на Ubuntu 14.04.

Чтобы загрузить свой образ, выполните вход в Docker Hub.

Вам будет предложено использовать для аутентификации пароль Docker Hub. Если вы указали правильный пароль, аутентификация должна быть выполнена успешно.

Примечание. Если ваше имя пользователя в реестре Docker отличается от локального имени пользователя, которое вы использовали при создании образа, вам потребуется пометить ваш образ именем пользователя в реестре. Для примера, приведенного на последнем шаге, вам необходимо ввести следующую команду:

Затем вы можете загрузить свой образ с помощью следующей команды:

Чтобы загрузить образ ubuntu-nodejs в репозиторий sammy, необходимо использовать следующую команду:

Данный процесс может занять некоторое время, необходимое на загрузку образов, но после завершения вывод будет выглядеть следующим образом:

После добавления образа в реестр он должен отображаться в панели вашей учетной записи, как на изображении ниже.

Новый образ Docker в Docker Hub

Если при попытке добавления возникает подобная ошибка, вы, скорее всего, не выполнили вход:

Выполните вход с помощью команды docker login и повторите попытку загрузки. Проверьте, появился ли образ на вашей странице репозитория Docker Hub.

Теперь вы можете использовать docker pull sammy / ubuntu-nodejs , чтобы загрузить образ на новый компьютер и использовать его для запуска нового контейнера.

Заключение

В этом обучающем руководстве вы установили Docker, поработали с образами и контейнерами, а также добавили измененный образ на Docker Hub. После знакомства с основами, вы можете переходить к другим обучающим руководствам Docker в сообществе.


Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Установку Docker мы будем производить на базе серверной операционной системы Ubuntu 20.04

Для установки вам понадобится выделенный либо виртуальный сервер с установленной Ubuntu 20.04

Установка

Перед началом установки обновим базу пакеты

Следующим шагом будем установка необходимых пакетов для корректной работы docker

Добавляем ключ GPG официального репозитория Docker:

Подключаем репозиторий Docker

После добавления нового репозитория обязательно обновим базу пакетов, иначе при выполнении команды установки система не будет знать что этот пакет доступен

Приступим к установке Docker

После установки Docker проверим, запущен ли демон

После выполнения команды вы должны получить примерно следующее

На этом установка Docker завершена.

Запуск первого Docker контейнера

Образы контейнеров Docker загружаются с Docker Hub

Загрузим тестовый контейнер hello-world

После выполнения команды начнется загрузка образа и его установка

Для поиска образов в Docker Hub используется команда search и ключевое слово поиска. К примеру вывод всех контйенеров в которых упоминается web

Вы получите следующий список

Для того чтобы загрузить нужный контейнер достаточно выполнить pull и указать имя контейнера

После загрузки контейнера его нужно будет запустить командой run

Еще одна команда которая может вам пригодится - просмотр загруженных образов.

Она выводит все образы которые были загружены на сервер

В качестве простого примера работы с контейнерами, я покажу вам как запустить ubuntu в контейнере под ubuntu, подключиться к контейнеру и установить программу в контейнере.

Устанавливаем контайнер с ubuntu

Запускаем контенер с ubuntu и подключаемся к нему в командную строку

После подключения в контейнер вы увидите приглашение следующего вида

Теперь мы находимся в контейнере и можем устанавливать все что нам может потребоваться. Давайте установим консольный файловый менеджер mc, но перед установкой обязательно обновим список пакетов

Для того чтобы выйти из контейнера достаточно выполнить команду exit

Управление контейнерами

Просмотр списка активных контейнеров

Вывод будет следующий

Просмотр контейнеров системы

Данная команда выведет примерно следующий текст

Список последних созданных контейнеров

Запуск контейнера производится командой start + ID контейнера либо имя контейнера . Для примера запустим контейнер с ubuntu его ID 997d1ad717ec , а имя interesting_lamarr

Теперь командой docker ps проверим статус контейнера

Для остановки контейнера выполним команду docker stop + ID либо имя контейнера

Для удаления контейнера используется команда docker rm + ID либо имя контейнера


Теперь вы умеет устанавливать Docker , скачивать, создавать, удалять и изменять контейнеры. И самое главное, в этом нет ничего сложного.

  • docker, ubuntu, ubuntu 20.04, докер, установка докер, установка docker, vds, vps
  • 6 Пользователи нашли это полезным

Связанные статьи

Для установки SSH-соединения из-под Windows скачайте и запустите программу-клиент PuTTYЗапустите.

VPS (англ. Virtual Private Server) или VDS (англ. Virtual Dedicated Server) — услуга, в рамках.

КомандаОписание Системная информация arch отобразить архитектуру компьютера uname.

ВАЖНО: для успешного создания NS в ISP Manager Вам нужно не менее 2 ip. Убедитесь, что вы.

Связка двух веб-серверов, один из которых выполняет функцию фонтенда (Nginx), другой - бэкенда.

Читайте также: