установить mysql с помощью докера, находятся ли они на одном сервере

Я установил mysql8 с помощью докера, следуя официальному руководству docker mysql начало работы

 docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=xxx -d mysql:8.0

И заметил следующие явления:

  1. Я не использовал громкость -v в docker run команда, но после остановки и запуска я вижу, что база данных и данные, которые я добавил, все еще там. (Я обнаружил в учебных пособиях, что без данных спецификации тома будут отсутствовать после перезапуска контейнера)
  2. у пользователя root нет '%' как разрешенный домен, но он может каким-то образом войти на сервер mysql следующим образом:
docker exec -it mysql8 mysql -uroot -p

находится ли хост-сервер как-то в том же домене, что и сервер mysql?

  1. хотя я могу войти в mysql на хосте, используя учетную запись root, и у меня есть файл some.sql на хосте pwd папка, но я не могу запустить source some.sql в mysql cli. Я думаю, это потому, что они не находятся в одном домене, и mysql не видит файл some.sql внутри своего контейнера.

Пожалуйста, помогите объяснить 3 пункта выше. Благодарю.

1 ответ
1

Я не использовал volume -v в команде запуска docker, но после остановки и запуска я вижу, что база данных и данные, которые я добавил, все еще там. (Я обнаружил в учебных пособиях, что без данных спецификации тома будут отсутствовать после перезапуска контейнера)

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

находится ли хост-сервер как-то в том же домене, что и сервер mysql?

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

Я думаю, это потому, что они не в одном домене

Это не имеет значения.

и mysql не видит файл some.sql внутри своего контейнера.

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

Вы можете поделиться файлом или каталогом с помощью тома (-v /some/dir/on/host:/some/dir/in/container) или скопируйте файл с docker cp.

  • Очень ясно, спасибо

    — Тиина
    4 часа назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *