Практика эксплуатации и обслуживания |Как использовать Docker для установки MySQL в автономном режиме
Практика эксплуатации и обслуживания |Как использовать Docker для установки MySQL в автономном режиме

Предисловие

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

1 Подготовка среды

  • Эта машина macOS 13.2
  • Homebrew 3.6.15 (в macOS вы в основном используете команду Brew для установки докера)
  • Терминал (вместо этого я использую iTerm2)

1.1 Проверьте окружающую среду

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

1.2 Установите докер

Если инструмент зеркала не установлен, мы можем использовать доморощенный, чтобы установить докер, выполнить поиск, а затем найти докер и выполнить команду установки. docker install docker Вот и все.

Язык кода:javascript
копировать
$ brew search docker
Warning: Unexpected method 'on_sonoma' called on Cask safari-technology-preview.
Follow the instructions here:
  https://github.com/Homebrew/homebrew-cask#reporting-bugs
==> Formulae
chipmk/tap/docker-mac-net-connect       docker-compose-completion               docker-machine-completion               docker-machine-parallels                lazydocker
docker                                  docker-credential-helper                docker-machine-driver-hyperkit          docker-slim                             powerman-dockerize
docker-buildx                           docker-credential-helper-ecr            docker-machine-driver-vmware            docker-squash                           wenjunxiao/brew/docker-accessor
docker-clean                            docker-gen                              docker-machine-driver-vultr             docker-swarm                            wenjunxiao/brew/docker-connector ✔
docker-completion                       docker-ls                               docker-machine-driver-xhyve             docker2aci                              mockery
docker-compose                          docker-machine                          docker-machine-nfs                      dockerize

==> Casks
docker                                  docker-edge                             docker-toolbox                          dockey                                  dozer

2 Выложите изображение онлайн

2.1 Извлеките удаленный образ

В сетевом состоянии, когда мы используем докер удаленный образ и укажите версию Вот и все.Например, я хочу вытащить пультmysql-8.0.31 , а затем используем команду docker pull mysql:8.0.31 . Вот практика:

Язык кода:javascript
копировать
$ docker pull mysql:8.0.31
8.0.31: Pulling from library/mysql
0ed027b72ddc: Pull complete
0296159747f1: Pull complete
3d2f9b664bd3: Pull complete
df6519f81c26: Pull complete
36bb5e56d458: Pull complete
054e8fde88d0: Pull complete
f2b494c50c7f: Pull complete
132bc0d471b8: Pull complete
135ec7033a05: Pull complete
5961f0272472: Pull complete
75b5f7a3d3a4: Pull complete
Digest: sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614
Status: Downloaded newer image for mysql:8.0.31
docker.io/library/mysql:8.0.31

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

По умолчанию докер получит последнюю версию образа при выполнении. docker pull mysql Команда эквивалентна docker pull mysql:latest,Все они тянут последнюю версию зеркальной библиотеки.

2.2 Проверьте вытянутое изображение

Можно использовать docker images Чтобы еще раз подтвердить, было ли изображение успешно извлечено и загружено. Если вы не знаете, какая версия вам нужна,можно пойтиdockerПроверьте официальный складhttps://hub.docker.com/_/mysql/tags?page=1&name=8.0.31

Язык кода:javascript
копировать
$ docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE 
……
mysql           8.0.31    7484689f290f   14 months ago   538MB
mysql           latest    3218b38490ce   2 years ago     516MB
……

3 Сохраните изображение локально

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

Формат файла экспорта

docker save -o [полный путь для сохранения файла] [имя изображения]:[версия изображения]

Обычно мы сохраняем образ MySQL как файл tar с именем и версией в качестве имени изображения, например:

Язык кода:javascript
копировать
$ docker save -o /Users/Aion/mysql-8.0.31.tar mysql:8.0.31
$ cd /Users/Aion
$ ll

4 Практика в автономной среде

4.1 Смонтируйте образ

Загрузите или скопируйте файл изображения в папку на сервере.,Конечно, для автономного сервера здесь также требуется среда «Установить докер».,После завершения установки,использоватьdocker loadкоманда для загрузки Вот и все Для удобства демонстрации мы можем удалить mysql в локальном образе. Команда удаления такая. docker image rm [идентификатор контейнера изображения: имя образа: версия образа]

Язык кода:javascript
копировать
$ docker image rm 3218b38490ce
Untagged: mysql:latest
Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
$
$ docker image rm mysql:8.0.31
Untagged: mysql:8.0.31
Untagged: mysql@sha256:3d7ae561cf6095f6aca8eb7830e1d14734227b1fb4748092f2be2cfbccf7d614
Deleted: sha256:7484689f290f1defe06b65befc54cb6ad91a667cf0af59a265ffe76c46bd0478
Deleted: sha256:fb249074ba1621ae2f0021b89488f93d6d591fd42f8bbc760be96a653d18a066
Deleted: sha256:d7912527c048a7e206c51080f7f1b6b6c383ac8954e3da7d113b00d0a96c7044
Deleted: sha256:994f05094d147f16e330dd7c9afd5e1472fbf1ce1038eb707e379ae507de6167
Deleted: sha256:1337fe7eaf3ed7bac1f1842205c3c80466781cf2ed39d755043a24939a9c4408
Deleted: sha256:4524762c7e21412b3fef00e189fe6b81e78f2751fef4f30355018dc3ab5f3cf2
Deleted: sha256:5222c8df3c5115dcf6c3bb957d5160d5d7124437fa2f214368d67b8e1e6d670e
Deleted: sha256:169fcf64e0d193fda3e49267b454ddeb4083f05e70bbcbbc6de2798944c3e555
Deleted: sha256:bc87451b8005b06fa948e48c2644bc42107cf037499d15dad7f341064035dfc2
Deleted: sha256:93c1acbf3bfcdd2a82a68687481569a07d619469a596b5f017f17cc092498eef
Deleted: sha256:29bd3d7c6e1683e422776b9d3285e8a3f1272f07656fc63a941cb7729a169100
Deleted: sha256:d3cc7b6aa7bc15725c1a856ce06fe436da3fbccf0c9c06b04e45f79b3439c154
$

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

После успешной загрузки информации мы проверяем, правильно ли загружен докер. Из следующей информации мы видим, что MySQL загружается в среду докера.

Язык кода:javascript
копировать
$ docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE 
……
mysql           8.0.31    7484689f290f   14 months ago   538MB
……

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

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

  • Формат:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

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

Язык кода:javascript
копировать
$ docker run --name mysql -p 13306:13306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31
1b794ee4a9e6b56244cbb561b7fce88ff20a1b5dae3cd0827bd2812199d99787

Например, если вам нужно его смонтировать, мне нужно смонтировать уже смонтированный образ MySQL.

Язык кода:javascript
копировать
docker run --name mysql -p 13306:13306 \
-v /var/mysql/log:/var/log/mysql \
-v /var/mysql/data:/var/lib/mysql \
-v /var/mysql/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31

Объяснение и описание параметра:

  • --name mysql:Укажите имя контейнера。
  • -p 13306:13306 : Сопоставьте порт 13306 контейнера с портом 13306 хоста. Передняя часть двоеточия — это порт хоста, а задняя часть двоеточия — внутренний порт контейнера.
  • -v /var/mysql/conf/my.cnf:/etc/my.cnf: Подключите папку конфигурации к хосту.
  • -v /var/mysql/log:/var/log/mysql: Подключите папку журнала к хосту.
  • -v /var/mysql/data:/var/lib/mysql: Подключите папку конфигурации данных к хосту.
  • -e MYSQL_ROOT_PASSWORD=123456:инициализацияrootПароль пользователя123456。
  • -d mysql:8.0.31 : запустить контейнер в фоновом режиме и вернуть идентификатор контейнера.

4.3 Подключаемся к контейнеру

Подключение к контейнеру на самом деле похоже на то, как мы используем команду mysql для подключения к серверу MySQL. Формат подключения к контейнеру аналогичен формату подключения к неконтейнеру:

docker exec -it [имя контейнера] mysql -uroot -p

  • Имя контейнера: параметры после --name, упомянутые выше.
  • Другие параметры: соответствуют соединению MySQL.

Результаты выполнения следующие:

Язык кода:javascript
копировать
$ docker exec -it mysql  mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

4.4 Проверьте успешность установки

Чтобы проверить, успешно ли это, мы можем выполнить несколько команд, чтобы проверить, успешно ли это.

Язык кода:javascript
копировать
mysql> 
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.31    |
+-----------+
1 row in set (0.00 sec)

mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql>

Подвести итог

Благодаря описанному выше опыту вы научились использовать Docker для извлечения образа MySQL в автономной среде и использовать Docker для создания, подключения и использования контейнера MySQL в автономной среде? Docker предоставляет удобный способ создания контейнерной среды MySQL и управления ею, что делает разработку и развертывание более гибкими и надежными. С другой стороны, он обеспечивает изоляцию и позволяет избежать некоторых проблем, вызванных аппаратными проблемами, особенно многих проблем, возникающих в ядре Arm.


Я участвую в пятом этапе конкурса эссе специального тренировочного лагеря Tencent Technology Creation 2024. Приходите и разделите приз со мной!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose