Фиксация докера не применяет изменения к вновь созданному образу докера

У меня есть папка с именем Test, а файлы в папке следующие:

Тест
- test_002.sql
- Dockerfile
- docker-compose.yml

содержание Dockerfile следующим образом -

FROM mysql:5.6.40  
COPY . /Test

содержимое docker-compose.yml показано ниже -

version: '3'  
services:
   test_db:
      build: .
      image: test_env
      container_name: test_env
      tty: true
      volumes: 
        - .:/Test
      environment: 
        MYSQL_DATABASE: 'test_db'
        MYSQL_ROOT_PASSWORD: 'test_root_pwd'
        MYSQL_PASSWORD:  'test_pwd'
        MYSQL_USER: 'root'

Теперь я объясню последовательность шагов, которые я сделал. шаг 1:

docker-compose up --build  

Это создало новый контейнер докеров, который запущен и работает
шаг 2:

Затем я попал внутрь док-контейнера docker exec -it <container-ID> bash
step3:
Внутри контейнера докеров у меня есть файл дампа mysql test_002.sql в папке Test. Я загрузил дамп mysql как mysql -uroot -ptest_root_pwd test_db < Test/test_002.sql. Затем тестовая база данных загружается со всеми таблицами и тестовыми данными в таблицы. step3_check: Проверка, загрузил ли шаг 3 тестовые данные дампа mysql в пустую базу данных (созданную, когда docker-compose up выполняется на шаге 1) -

mysql -uroot -psecret  
use test_db;
show tables;

Я вижу все таблицы внутри test_db и тестовые данные внутри каждой таблицы, полученные из файла дампа mysql (test_002.sql). Все идет нормально.

step4: Теперь я хотел создать новое изображение с таблицами и тестовыми данными, загруженными в test_db. Итак, я сделал docker container commit <container-ID> <Image:Tag>. Это создало новый образ (который предположительно должен содержать test_db со всеми таблицами и тестовыми данными)

step5: Я нажимаю только что созданный образ докеры Image:Tag в dockerhub.

step6: С другой машины я извлек этот образ докера Image:Tag и запустил контейнер докера, основанный на этом недавно извлеченном образе docker run Image:Tag. Затем создается новый контейнер докеров, который работает, как на шаге 1.

step7: В этом недавно созданном контейнере докеров из шага 6 я сделал следующее:

mysql -uroot -psecret  
use test_db;
show tables; 

Результат - Empty set (0.00 sec).

Где все таблицы и тестовые данные? Я думал, что загрузился в test_db и создал новый образ с изменениями, используя docker commit. По-видимому, в образе докера, который я вставил в концентратор докера, нет тестовых данных.

Любая идея, почему это произошло, или какие-либо предложения о том, как загрузить test_db с тестовыми данными и заморозить это как изображение докера и вытащить его с любого другого компьютера Другими словами, если я извлечу Image:Tag из концентратора докеров, все контейнеры, созданные из этого образа, должны иметь базу данных mysql с именем test_db со всеми загруженными таблицами и тестовыми данными.

Спасибо,

Каково содержимое /var/lib/mysql как в локальном контейнере, так и в опубликованном образе?

sp0gg 15.06.2018 04:02

Можете ли вы попробовать вызвать фиксацию с дополнительным флагом изменения, например docker commit --change?

namokarm 15.06.2018 18:29

@namokarm docker commit --change <ID контейнера> <Изображение: Тег> выдает сообщение об ошибке от демона: Нет такого контейнера: <Image:Tag>

Kingz 18.06.2018 21:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
3
239
0

Другие вопросы по теме