Как стать автором
Обновить

Первый опыт работы с Docker

Время на прочтение4 мин
Количество просмотров18K

Хотелось бы поделиться "граблями", на которые успел наступить при работе с docker, интересными фишками и вообще рассказать про эту замечательную технологию.

Что за зверь такой?

Думаю, сегодня уже все слышали про docker, но все же:
Docker - контейнеризатор приложений. =) (более развернутое пояснение на вики)

А тут я собрал основные свойства технологии:

Система контейнеров

Возможность добавлять в контейнер сам проект , среду окружения , сервер и все остальное

Запуск на любой машине без установки среды

Запуск с помощью одной команды

Безопасность

Возможность тестирования новых технологий без ее установки

Установка

Установка вполне дефолтная, но все же уделю этому немного внимания

Первое, что необходимо сделать - перейти на официальный сайт (удивительно, правда?!)

официальный сайт docker
официальный сайт docker

далее, как показано на скриншоте выше, вбираем вашу систему, и дожидаемся загрузки.
Стандартная установка и все, поздравляю, Вы установили себе Docker Desktop.

первый запуск
первый запуск
Грабля при установке

На ОС Windows может появиться ошибка, связанная с Hyper-V (система аппаратной визуализации)

Решение:

Переходим в папку с Docker -> открыть файл start.sh ->открываем в любом текстовом редакторе -> найти следующую строку:

"${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}"

->заменить на :

"${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV "${VM}«

->снова запустить процесс установки (готово)

Работа с Docker

Есть несколько способов работы с Docker :

  • Работать в Docker Desktop (как устанавливать смотреть выше!)

  • При помощи cmd

  • Через IDE

Первый запуск

Запускаем наш Docker Desktop и открываем командную строку. После запуска приложения, у Вас должна отображаться следующая иконка (в скрытых значках):

в командной сроке пишем следующую команду:

docker

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

cmd
cmd
Если командная строка говорит, что не знает такой команды как "docker"

Проверьте переменные зависимости. В переменной PATH мог не прописаться путь до docker.exe. Найдите путь до docker.exe (обычно в папке bin) и добавьте путь в переменную PATH

Надеюсь у Вас все хорошо, и команда docker заработала и описание команд появилось и погода хорошая. Теперь то можно и скопировать команду из Docker Desktop

Про это команду идет речь
Про это команду идет речь

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

процесс создание контейнера
процесс создание контейнера

И что же мы сделали? Создали и запустили контейнер docker/getting-started на порту 80.
Вернемся в наш Docker Desktop и видим следующее:

Запущенный контейнер
Запущенный контейнер

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

Перейдем во вкладку Images и увидим следующее:

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

docker info

тогда увидим следующее

Видим всю информацию про все контейнеры и образы.

Давайте-то уже посмотрим, что у нас получилось. Переходим в Docker Desktop во вкладку Containers/Apps и нажимаем следующее:

Hello world! по docker-ски

Можем насладиться проделанной работой)

Контейнеры и образы

Контейнеры, образы - чтооооо?!
Давайте теперь немного теории(совсем чуть-чуть)

Образ – готовое решение , содержащее некий функционал(нельзя изменять), на его основе можем создать свой контейнер
Контейнер – это собранный проект , состоящий из образов: упакованное (контейнеризированное) приложение на основе образов

Посмотрим на картинку ниже:

Архитектура docker
Архитектура docker

Тут наглядно показан принцип работы технологии docker, но все же, уточним моменты:

  • Docker deamon – промежуточный api для нахождение и скачивания нужного image

  • Docker hub -  место сбора различных образов

  • Images –образы

  • Containers- контейнеры

Установка образа

Давайте попробуем развернуть какой-нибудь контейнер (что-то повеселее стартовой страницы).

  • Заходим на сайт docker

  • Переходим во вкладку: Explore

  • В поиске вводим название нужного образа (я буду скачивать образ java- вы можете выбрать любой другой)

на
на

находим следующее

нажимаем, видим сразу готовенькую команду:

Копируем и вставляем в командную строку –> тем самым устанавливаем себе образ java:

Запуск образа

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

docker run имя_образа 

"Стоп" - скажите Вы . А откуда взять имя образа? А вот от куда:

docker images

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

Что получили

Запустить образ без контейнера невозможно – противоречит принципу docker, следовательно у нас создался контейнер на основе нашего образа, который мы пытались запустить

Давайте запустим наш контейнер в интерактивном режиме и убедимся, что мы все сделали верно. Вводим команду для запуска (даем свое имя- тут я обозвал его как JavaContainer):

docker run -it --name JavaContainer openjdk

Получаем запущенный контейнер:

Видим - запустили контейнер с java (об этом нам говорит надпись jshell- java оболочка). Ну хорошо, поигрались с java, а как вернуться обратно, команды docker то уже не работают. И что делать ?

Спокойствие, только спокойствие. Нажимаем магическую комбинацию Ctrl + D:

и о чудо, можно выдохнуть)

А что еще можно запустить?

Давайте , на последок, посмотрим еще возможности docker и запустим Ubuntu.

Схема запуска не сложнее, чем мы занимались выше, все действия аналогичные:

  • Аналогично шагам выше , зайдем на сайт  и найдем Ubuntu, после воспользуемся командой в описании на сайте

  • Далее запустим в интерактивном режиме:

docker run –it –name имя_контейнера имя_образа

как-то так )

Итоги

Тут я собрал некоторые полезные команды docker и их описание на русском. Может кому пригодится).

Это был краткий обзор на технологию Docker, разумеется он не претендует на полноценный гайд: не было рассказано про Dockerfile или Docker compose или про запуск контейнеров в IDE, про создание собственных образов; НО цель данной статьи - помочь ознакомиться с базой а не рассказать про все и вся). В будущем поговорим про незатронутые тут моменты в Docker. Надеюсь моя статья была для Вас полезной!

Теги:
Хабы:
-17
Комментарии12

Публикации

Истории

Работа

Ближайшие события