В этом коротком посте блога я объясню вам некоторые основы о Docker. Цель состоит в том, чтобы создать пользовательское изображение с базой данных MS SQL Server и сделать его конфиденциальные данные анонимными 🐱💻. Если это звучит интересно вам, пожалуйста, оставайтесь со мной, когда я прохожу вас через этот простой небольшой процесс. Если у вас проблемы, вы можете проверить файлы в My Github Reppo здесь Отказ
Требования к программному обеспечению
Для того, чтобы следовать этой демонстрации, у вас должен быть установлен Docker на вашем компьютере. Я использую Docker Desktop для Windows (вы можете скачать здесь ). Я рекомендую вам использовать контейнеры Linux и установите Docker для использования WSL — V2 для его двигателя вместо Hyper-V. Чтобы проверить правильность демонстрации, которую вы должны установить клиент, который может подключиться к SQL Server (я использую SQL Server Management Studio).
Ингредиенты
Это единственные две вещи, необходимые для завершения этого поста:
- Резервное копирование демонстрационной базы данных. Вы можете скачать образец из здесь
- T-SQL Script для восстановления БД и анонимных данных. Вы можете скачать здесь
⭐hint⭐. Я предлагаю вам скопировать эти два файла в том же каталоге в вашей файловой системе.
Докерфильское здание
Это основная часть поста в блоге, поэтому я постараюсь глубоко погружаться в каждом заявлениях DockerFile, чтобы дать вам лучшее представление о своем использовании и вариантах. Во-первых, вы должны создать файл под названием «Dockerfile» в папке, где вы разместили два ингредиента выше (⚠️Warning⚠️ Обязательно не Добавьте любое расширение в файл, а не «.txt», «.json «, просто» Dockerfile «). Как только вы создали файл, мы можем начать редактировать его. Первые три строки для добавления:
FROM mcr.microsoft.com/mssql/server:2019-latest as build ENV ACCEPT_EULA=Y ENV MSSQL_SA_PASSWORD=abcdABCD1234!
Первая строка будет загружать изображение SQL Server 2019 из Docker Hub, если не может быть найдено локально. Это изображение работает на контейнерах Linux, поэтому вы должны использовать их для того, чтобы следовать. Во второй и третьей строки мы устанавливаем два переменных среды, которые нам нужны, чтобы правильно раскрутить SQL Server. Пожалуйста, не забудьте предоставить политику, жалобный пароль для SA, потому что он может привести к ошибке входа в систему. Я обнаружил, что предоставленный пароль выполняет свою работу в этом случае.
WORKDIR /tmp COPY AdventureWorksLT2017.bak . COPY restore-db-and-mask-data.sql .
Теперь мы должны установить рабочий каталог на «/TMP» (Вы можете заметить, что это путь Linux, как мы можем запустить команды внутри машины Linux). Два других утверждения копируют два указанных файла («adventure workslt2017.bak» и «restore-db-and-mask-data.sql») в рабочем каталоге, чтобы мы могли использовать их в будущих заявлениях.
RUN /opt/mssql/bin/sqlservr --accept-eula & sleep 25 \ && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "abcdABCD1234!" -i /tmp/restore-db-and-mask-data.sql \ && pkill sqlservr
С помощью этого оператора мы начали MS SQL Server, и мы заставили его дождаться 25 секунд, чтобы завершить необходимые действия запуска, такие как запуск системных баз данных, приготовьте сервер, чтобы принять клиентские подключения и так далее. Если вы узнаете, что эта задержка слишком высокая или слишком маленькая на на вашей машине, не стесняйтесь настроить его, как пожелаете. На второй строке мы используем утилиту SQLCMD для выполнения соединения через CLI (командно-линейный интерфейс), и мы указываем входной файл для выполнения с флагом «-I», за которым следует путь к файлу на машине Target Linux. Оператор завершается командой, которая убивает сервер. 🔧bonus tip🔧 Для того, чтобы разделить одну команду между несколькими строками, используйте комбинацию «\» и «&&».
FROM mcr.microsoft.com/mssql/server:2019-latest as release ENV ACCEPT_EULA=Y
Отчет о выписании используют одно и то же базовое изображение, что и вышеизложенное из оператора, но теперь используемый псевдоним является «выпуском» вместо «сборки». Это многостоятельная сборка. Вы можете найти больше информации здесь Отказ ENV One такой же, как и раньше, и обязательно продолжается, так как использовать этот продукт, вы должны принять лицензию конечного пользователя.
COPY --from=build /var/opt/mssql/data /var/opt/mssql/data
Это последнее утверждение нашего Dockerfile. При этом вы скопируете файл данных базы данных (после того, как сценарий T-SQL работает) в чистое изображение SQL Server. Таким образом, наше изображение может быть построено благодаря этому DockerFile. Итак, давайте пойдем вперед!
Здание изображения
Теперь, когда наш DockerFile готов к использованию, мы можем создать наше пользовательское изображение на основе него. Сначала вы открыли оболочку из терминала (E.g. Windows Terminal, VS-код встроенный, PowerShell и так далее) и перейдите к каталогу со всеми файлами в этой демонстрации. После этого вы сможете запустить это утверждение:
docker build -t my-custom-db .
С этой инструкцией вы построите изображение, называемое «My-Custom-DB» с флагом «-T» из DockerFile, расположенном в текущей папке (🔴Вотранжируйте❗ 🔴 Обратите внимание «.» В конце линии ). Если ваш DockerFile не находится в текущей папке, вы должны указать свой путь, иначе он приведет к ошибке. 🔎note🔎 Если вы запустите эту команду несколько раз, не измените ничего, вы заметите, что Docker повторно используют шаги из кеша вместо того, чтобы восстановить их вслепую. Это удивительная экономия времени, что Докер принесет в нашу жизнь.
Запустите контейнер
Последний шаг состоит в том, чтобы раскрутить контейнер на основе нашего пользовательского изображения и проверить, все ли работает нормально.
Команда следующая:
docker run -p 11433:1433 -d my-custom-db
Флаг «-P» указывает сопоставление между портом хоста (11433) и портом контейнера (1433). «-D» означает Отдельный режим То есть терминал не будет слушать какие-либо команды ввода/вывода, но контейнер все еще работает в фоновом режиме.
Тестирование
Фаза тестирования разделена на две части.
Проверьте, работает ли контейнеры
Чтобы проверить, будет ли контейнер вверх и работает, вы можете выдать эту команду в терминале:
docker ps -a
«Docker PS» используется для перечисления активных и беговых контейнеров. Флаг «-а» означает «все», поэтому мы можем увидеть как бегущие и не работает контейнеры.
Проверьте, имеет ли база данных правильных данных
Чтобы проверить, являются ли данные, которые ожидаются, что вы можете попробовать подключиться к серверу MS SQL с помощью клиента SQL. В моем случае я использовал студию по управлению SQL Server. Параметры моего соединения были:
- Имя сервера: localhost, 11433
- Имя пользователя: SA.
- Пароль: abcdabcd1234!
При подключении к серверу вы можете найти базу данных с именем AdventureWorks. В нем вы можете проверить, не имеет ли таблица «клиента», не имеет конфиденциальных данных. И вуаля! Нет более чувствительных данных в вашем столе. Деятельность была успешной 😄.
Заключение
Теперь вы можете создать свое пользовательское изображение и сделать несколько простых вещей с Docker. Один корпус использования — это когда вы должны иметь дело с резервной копией, которые содержат конфиденциальные данные. Вы не можете показать их кому-либо еще. Один из способов достижения этого может быть этот метод, поэтому вы все еще можете работать с последовательными данными, не подвергая конфиденциальной информации. В этом посте мы только поцарапали поверхность докера, есть много других вещей, которые стоит осознавать. Этот блог пост основан на разговоре, который вы можете увидеть здесь Отказ
Я надеюсь, что вам понравится этот пост и найду его полезным. Если у вас есть какие-либо вопросы или вы хотите определить мне некоторые ошибки, я действительно ценю это, и я сделаю все возможное, чтобы следить. Если вам понравится и понравится, и хотели бы выдержать меня, подумайте о том, чтобы дать подобное и поделиться своими любимыми социальными. Оставайся в безопасности и увидимся скоро! 😎
Оригинал: «https://dev.to/ivan_pesenti/docker-how-to-build-use-your-first-image-4m2j»