【问题标题】:Docker commit does not actually commitDocker 提交实际上并没有提交
【发布时间】:2021-04-05 11:37:49
【问题描述】:

(我是 docker 新手,请耐心等待) 注意:我不使用卷,所以this question 中的答案不适用

  1. 我正在使用末尾列出的 docker-compose 文件从两个 docker 映像(jomla+apache+php 和 mysql)创建两个容器。一切正常。
  2. 我可以连接到Joomla安装页面我通过初始配置,连接到数据库,一切都很好。 (我现在可以浏览到主页和管理页面)。甚至安装文件夹也被删除了(joomla 中的强制步骤)。我可以在容器中看到创建/修改的新文件和新数据库。
  3. 我现在将两个正在运行的容器提交到两个新映像:docker commit CONTAINER_ID new_image_name
  4. 新图像创建良好
  5. 我使用 docker-compose down 删除了容器
  6. 我修改了 docker-compose.yml 文件以分别为 joomla 和 mysql 使用新提交的图像
  7. 我发出 docker-compose up -d
  8. 然后出现了挫折:当我浏览到页面时,我回到了 Joomla 安装页面,配置文件不见了,数据库为空,安装文件夹重新出现。换句话说,任何一个图像都没有发生任何事情。 我什至删除了旧图像,以排除意外使用它们的可能性。

为什么 docker 不提交这些更改?

如果我进行手动更改(例如 docker cp ...docker exec ... 甚至在容器内),这些会坚持并提交就好了。 我花了整整两天时间,感谢任何帮助。

docker-compose.yml:

version: '3.8'

networks:
  frontend:
  backend:

services:

  mysql_db:
    container_name: mysql
    image: mysql_me:latest
    command: mysqld --innodb-buffer-pool-size=20M
    restart: on-failure
    environment:
      MYSQL_DATABASE: 'joomla'
      MYSQL_USER: 'joomla_user'
      MYSQL_PASSWORD: 'JPassword'
      MYSQL_ROOT_PASSWORD: 'RPassword'
      MYSQL_ROOT_HOST: '%'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    networks:
      - backend

  joomla:
    container_name: joomla
    image: joomla_me:latest
    restart: always
    ports:
      - "443:443"
      - "8080:80"
    environment:
      JOOMLA_DB_HOST: 'mysql_db:3306'
      JOOMLA_DB_USER: 'joomla_user'
      JOOMLA_DB_PASSWORD: 'JPassword'
      JOOMLA_DB_NAME: 'joomla'
    links:
      - mysql_db:3306
    networks:
      - frontend
      - backend
    depends_on:
      - mysql_db

【问题讨论】:

  • Docker Hub joomlamysql 镜像都在各自的 Dockerfile 中声明了一个 VOLUME,因此即使您没有声明,数据也始终在一个卷中。你不能在这里使用docker commit。使用docker commit 通常不是一个好主意。它会导致您无法复制其构建的图像,并且当您绝对需要安全修复时,您无法升级底层软件。
  • 谢谢大卫迷宫 - 就是这样!

标签: mysql docker docker-compose joomla commit


【解决方案1】:

就像 David Maze 指出的那样,我构建的原始图像已经在使用卷,因此我的自定义图像“继承”了这些卷 - 即使我没有在我自己的 yaml 文件中明确声明任何卷。 在我搜索的任何地方都找不到该文档,所以我希望这对其他初学者有所帮助。

【讨论】:

  • 您可以“接受”您的回答以将此页面标记为已解决。如果您正在做 Joomla 开发,请加入Joomla Stack Exchange。
猜你喜欢
  • 2015-10-10
  • 2015-10-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 2017-07-09
  • 2011-09-07
相关资源
最近更新 更多