Як встановити та використовувати Docker в Ubuntu, DigitalOcean
Sign up for our newsletter.
Get the latest tutorials on SysAdmin and open source topics.
Scalable compute services.
Worry-free setup & maintenance.
Simple object storage.
Run managed Kubernetes clusters.
Easily distribute traffic.
Приналежності стрімких розмірів.
Deploy pre-built applications.
Connect, share and learn
DevOps and development guides
Development and systems Q&A
by Justin Ellingwood
Існує два методи встановлення Docker на Ubuntu 16.04. Перший включає встановлення на існуючу операційну систему. Другий передбачає використання утиліти Docker Machine, яка самостійно встановлює Docker на сервер.
У цій статті ви дізнаєтесь, як встановити Docker в Ubuntu 16.04.
Перед встановленням
Для того, щоб дотримуватися інструкцій, описаних у цій статті, вам знадобляться:
- Дроплет із 64-бітною Ubuntu 16.04.
- Не-рутовий користувач з привілеями sudo. Налаштувати такого користувача можна за допомогою інструкцій у статті "Початкове налаштування сервера на Ubuntu 16.04".
Увага: Для встановлення Docker необхідна 64-бітна версія Ubuntu, а також версія ядра не нижче 3.10. 64-бітовий дроплет за замовчуванням з Ubuntu 16.04 відповідає цим вимогам.
Усі команди, згадані в цій статті, повинні виконуватися від імені нерутового користувача. Якщо для виконання команди потрібні привілеї root, ця команда буде виконуватися з sudo . Стаття Початкове налаштування сервера з Ubuntu 16.04 описує процес додавання користувачів та наділення їх привілеями sudo.
Крок 1 - Встановлення Docker
Пакет установкиDocker, доступний в офіційному репозиторії Ubuntu 16.04, може бути не останньої версії. Для отримання останньої версії необхідно встановлювати Docker із офіційного репозиторію Docker. Далі ми опишемо процес такої установки.
Для початку оновимо базу даних пакетів:
Тепер встановимо Docker. Додайте ключ GPG офіційного репозиторію Docker у вашу систему:
Додамо репозиторій Docker до списку джерел пакетів утиліти APT:
Відновимо базу даних пакетів інформацією про пакети Docker із знову доданого репозиторію:
Переконаємося, що ми збираємося встановити Docker із репозиторію Docker, а не з репозиторію за замовчуванням Ubuntu 16.04:
В результаті ви повинні побачити висновок, схожий на цей:
Зверніть увагу, що docker-engine не встановлений, для встановлення буде використано репозиторій Docker для Ubuntu 16.04. Версія docker-engine може відрізнятись від зазначеної в нашому прикладі.
Далі, нарешті, встановимо Docker:
Після завершення виконання цієї команди Docker має бути встановлений, демон запущено, і процес повинен запускатися під час завантаження системи. Перевіримо, що процес запущено:
Висновок має бути схожий на поданий нижче, сервіс повинен бути запущений та активний:
При установці Docker ми отримуємо не лише сервіс (демон) Docker, але й утиліту командного рядка docker або клієнта Docker. Ми розглянемо використання утиліти docker далі у цій статті.
Крок 2 - Використання команди Docker без прав sudo (опціонально)
За промовчанням запуск команди docker вимагає привілеїв root, що означає, що ви повинні використовувати sudo . Також ця команда може запускатися користувачем, включеним до групиdocker, яка автоматично створюється під час встановлення Docker. При спробівикористання команди docker користувачем без привілеїв sudo або користувачем, що не входить до групи docker, ви отримаєте такий результат:
Для того, щоб не вводити sudo кожного разу при запуску docker , додайте ім'я користувача до групи docker:
Для застосування цих змін вам необхідно розлогитися і залогінитися у ваш дроплет.
Якщо ви хочете додати довільного користувача до групи docker, ви можете вказати ім'я користувача у явному вигляді:
Далі у цій статті ми вважатимемо, що ви використовуєте команду docker користувачем, що у групі docker. Якщо ви не бажаєте додавати свого користувача до групи docker, пишіть sudo для виконання команд docker .
Крок 3 — Використання команди Docker
Тепер, коли Docker встановлений, ознайомимось із можливостями його утиліти командного рядка. Утиліта дозволяє використовувати різні опції, команди та аргументи. Загальний вигляд синтаксису виглядає так:
Для Docker 1.11.1 повний список підкоманд включає:
Крок 4 - Робота з образами Docker
Контейнери Docker запускаються із образів Docker. За умовчанням Docker отримує образи з Docker Hub, що є реєстром образів, підтримуваний компаній Docker (ця компанія стоїть за всім проектом Docker). Будь-хто може створити та завантажити свої образи Docker у Docker Hub, тому для більшості додатків та дистрибутивів Linux, які можуть знадобитися вам для роботи, вже є відповідні образи в Docker Hub.
Для того, щоб перевірити, чи ви можете здійснювати доступ і завантажувати образи з Docker Hub, введіть наступну команду:
Коректний результат роботи цієї команди представлений нижче, він означає, що Docker працює правильно:
Ви можете шукати образи,доступні в Docker Hub, використовуючи команду docker із підкомандою search . Наприклад, щоб знайти образ Ubuntu, введіть:
Скрипт поверне список всіх образів на Docker Hub, які підходять під пошуковий рядок. У нашому прикладі результат виглядатиме схожим на цей:
У стовпціOFFICIAL рядокOK вказує на те, що образ побудований та підтримується компанією, яка займається розробкою цього проекту. Після того, як ви вирішили, який образ використовувати, ви можете завантажити його на вашу машину, використовуючи підкоманду pull :
Після завантаження образу ви можете запустити контейнер із завантаженим чином під командою run. Якщо на момент виконання підкоманди run образ ще не був завантажений, клієнт Docker спершу завантажить образ, а потім запустить контейнер із таким чином:
Висновок має виглядати схожим чином:
Як ми покажемо далі в цій статті, образи, які ви використовуєте для запуску контейнерів, можуть бути модифіковані та використані для створення нових образів, які, у свою чергу, можуть бути завантажені у Docker Hub або будь-якому іншому репозиторію образів.
Крок 5 - Запуск контейнера Docker
Контейнер hello-world, який ми запускали раніше, є прикладом контейнера, який запускається та завершує роботу після виведення тестового повідомлення. Контейнери можуть виконувати більш корисні дії, а також вони можуть бути інтерактивними. Зрештою, вони дуже схожі на віртуальні машини, лише менш вимогливі до ресурсів.
Як приклад, запустимо контейнер, який використовує останню версію образу Ubuntu. Комбінація ключів-i та-t дозволяє здійснювати інтерактивний доступ до контейнера:
Ваше консольне введення має змінитися для відображення факту, що ви працюєте всерединіконтейнер. Він набуде наступного вигляду:
Увага: Зверніть увагу, що ідентифікатор контейнера відображається в консольному введенні. У прикладі вище це d9b100f2f636.
Тепер ви можете виконувати будь-які команди всередині контейнера. Наприклад, давайте оновимо базу пакетів усередині контейнера. Немає необхідності використовувати sudo, оскільки всередині контейнера ви працюєте з привілеями root:
Тепер встановимо будь-яку програму в контейнер. Наприклад, NodeJS.
Крок 6 - Збереження змін у контейнері в образ Docker
Коли ви запускаєте контейнер із зображення Docker, ви можете створювати, змінювати та видаляти файли, як і на віртуальній машині. Внесені вами зміни матимуть силу лише у запущеному контейнері. Ви можете запускати та зупиняти контейнер, але, як тільки ви знищите його командою docker rm, всі зміни будуть безповоротно втрачені.
У цьому розділі ми покажемо, як зберігати зміни стану контейнера як нового образу Docker.
Після встановлення NodeJS у контейнер Ubuntu, ваш запущений контейнер відрізняється від образу, який був використаний для його створення.
Для збереження стану контейнера у вигляді нового образу вийдіть з нього:
Увага: Коли ви робите коміт образу, новий образ зберігається локально, тобто на машині. Далі в цій статті ми опишемо, як відправити (push) образ до репозиторію Docker (наприклад, Docker Hub) для того, щоб він був доступний не тільки вам, але й іншим користувачам.
Після завершення операції виведення списку образів Docker на вашій машині має відображати і щойно створений образ, а також вихідний образ, з якого ми побудували новий образ:
Висновок має бути схожий на цей:
У прикладі вищеubuntu-nodejs - це новий образ, створений на основі образу ubuntu з Docker Hub. Різниця у розмірі відображає внесені зміни. У цьому прикладі різниця у розмірі викликана встановленим NodeJS. Наступного разу, коли вам потрібно буде запустити контейнер з Ubuntu з встановленим NodeJS, ви можете використовувати цей новий образ. Образи можуть будуватися за допомогою так званого файлу Docker (Dockerfile). Але це складніший процес і ми не описуватимемо його в цій статті.
Крок 7 — Відображення контейнерів Docker
Ви побачите висновок наступного характеру:
Для відображення останнього створеного контейнера використовуйте ключ -l:
Щоб зупинити запущений контейнер, введіть:
Ідентифікатор-контейнер можна знайти за допомогою команди docker ps .
Крок 8 - Надсилання контейнерів Docker в репозиторій Docker
Для початку зареєструйтесь у Docker Hub. Далі для відправлення свого образу, увійдіть в Docker Hub, використовуючи свій обліковий запис:
Якщо ви вказали правильний пароль, автентифікація має завершитися успішно. Тепер ви можете надіслати свій образ за допомогою наступної команди:
Відправка займе деякий час, після її завершення ви побачите висновок, схожий на цей:
Після відправки образу в репозиторій, ви зможете побачити образ на панелі управління, як на малюнку нижче.
Якщо при спробі надсилання образу ви побачили помилку, схожу на подану нижче, ви не залогінилися в Docker Hub:
У цьому випадку здійсніть вхід до репозиторію і повторіть відправлення образу.
Висновок
У цій статті ми торкнулися лише основ роботи з Docker, однак отриманих знань має вистачити для початку роботи з Docker в Ubuntu 16.04. Як і більшість проектів з відкритим вихідним кодом, Docker заснований на швидкокодовій базі, що змінюється, тому буде корисно завести звичку регулярно відвідувати блог проекту для ознайомлення з останньою інформацією про проект.