【发布时间】:2019-01-31 00:23:32
【问题描述】:
我安装了最新的 Docker CS,从 Docker Hub 获得了LAMP image。我正在尝试在其中创建一个数据库并使用保存在其中的数据库制作一个新图像。
- 启动容器:
docker run --name mycontainer fauria/lamp这将启动基于 Ubuntu 的容器并启动 Apache 服务器。 MySQL 服务器也在容器中运行。 - 访问容器外壳:
docker exec -i -t mycontainer bash - 创建一个数据库并在其上运行一些 MySQL 命令:
mysql -u rootCREATE DATABASE mydbname;USE mydbname;CREATE FUNCTION ...... - 停止容器:
docker stop mycontainer - 创建镜像:
docker commitdocker ps -l -qmynickname/appname:v1 - 移除容器
docker container rm mycontainer
现在我预计,如果我基于新图像运行容器,我已经拥有数据库。但它不存在。
docker run --name mycontainer --rm -p 80:80 -e LOG_STDOUT=true -e LOG_STDERR=true -e LOG_LEVEL=debug -v /home/username/dev/appname/www:/var/www/html mynickname/appname:v1
我错过了什么?
【问题讨论】:
-
docker commit不会将数据保存在外部卷中,这可能是您的图像具有的。不过,我建议通读 Docker 的 official tutorial and building and running custom images:IME 所有一体式容器、在正在运行的容器上运行交互式命令或使用docker commit都不是最佳实践。 -
@DavidMaze OP 提供了完整的
docker run命令行。数据库没有外部卷,只有 html 文件。