docker commit不会对新创建的docker映像应用更改

btqmn9zl  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(280)

我有一个名为 Test 文件夹中的文件如下--
测试
-测试\u 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'

现在,我将解释我所做的一系列步骤
第一步:

docker-compose up --build

这已经创建了一个新的docker容器,它正在运行
第二步:
然后,我进了码头集装箱 docker exec -it <container-ID> bash 第三步:
在docker容器中,我有mysql转储文件 test_002.sqlTest 文件夹。我加载mysql转储为 mysql -uroot -ptest_root_pwd test_db < Test/test_002.sql . 然后将所有表和测试数据加载到测试数据库中。
step3\u check:检查step3是否将mysql dump测试数据加载到空数据库中(在步骤1中执行docker compose up时创建)--

mysql -uroot -psecret  
use test_db;
show tables;

我能看到里面所有的table test_db 每个表中的测试数据来自mysql转储文件( test_002.sql ). 到现在为止,一直都还不错。
步骤4:现在我想创建一个新的映像,将表和测试数据加载到test\ udb中。所以我做了 docker container commit <container-ID> <Image:Tag> . 这创建了一个新的图像(应该包含 test_db 所有表格和测试数据)
步骤5:我推送新创建的docker图像 Image:Tag 到dockerhub。
第六步:我从另一台机器上提取了这个docker图像 Image:Tag 并根据新提取的图像运行了一个docker容器 docker run Image:Tag . 然后创建一个新的docker容器并像步骤1一样运行
第7步:在第6步中新创建的docker容器中,我执行了以下操作--

mysql -uroot -psecret  
use test_db;
show tables;

结果是 Empty set (0.00 sec) .
所有的表格和测试数据都在哪里?我想我加载到test\ db中,并使用 docker commit . 显然,在我推送到docker hub的docker映像中没有测试数据。
你知道为什么会发生这种情况吗?或者你对如何让test\u db加载测试数据并将其冻结为docker映像并从任何其他机器上提取它有什么建议吗
换句话说,如果我拉 Image:Tag 在docker hub中,从该映像创建的所有容器都应具有名为“test\u db”的mysql数据库,并加载所有表和测试数据。
谢谢,

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题