0

我的主要目标是在保持数据的同时快速轻松地启动和运行图像。我认为 ACI 是做到这一点的最佳方式。假设这是真的……

[Edit2] 似乎有一个更根本的问题是无法像在 docker 中那样指定主机名。我将在一个单独的线程中问这个问题。我能够附加存储。

[原帖] 我想使用 ACI 来设置 Docker Hub 上的图像。我已经能够按照这里的简单教程进行操作,但我需要附加存储。

具体来说,这是我正在使用的图像:https ://hub.docker.com/r/sverhoeven/cartodb/

这些是有关如何设置持久数据的说明,但我认为它们不会直接转换为 ACI。这取自该 docker hub 页面的“Persistent Data”部分

要持久化 PostgreSQL 数据,必须将 PostGreSQL 数据目录 (/var/lib/postgresql) 持久化到 Cartodb Docker 容器之外。...</p>

做一个临时容器

docker create --name cartodb_pgdata sverhoeven/cartodb

将 Postgresql 数据目录 (cartodb_pgdata) 保存到本地目录。** 我们如何使用 ACI 做到这一点?

docker cp cartodb_pgdata:/var/lib/postgresql $PWD/cartodb_pgdata docker rm -f cartodb_pgdata

将 cartodb_pgdata 的所有权设置给文件系统上的 (uid=105) 用户。** 我们如何使用 ACI 做到这一点?

sudo chown -R 105.105 $PWD/cartodb_pgdata 

在此之后,CartoDB 容器将拥有一个在重新启动后保持填充状态的数据库。CartoDB 容器可以启动

docker run -d -p 80:80 -h cartodb.example.com -v $PWD/cartodb_pgdata:/var/lib/PostgreSQL sverhoeven/cartodb

有许多问题我无法找到解决方案,例如:

  • 我不知道是使用 emptyDir 还是 Azure 文件共享。
  • 我不知道如何编辑所有权
  • 我不知道如何设置 ACI 以在启动容器时调用特定的 docker run 命令
4

1 回答 1

1

您应该使用 Azure 文件共享,因为 emptyDir 不是持久存储。基本上你需要的是在你的容器组中添加一个文件共享卷并将它挂载到 /var/lib/PostgreSQL。默认情况下,文件共享卷将以 777 权限挂载。

由于您在创建容器时已经传递了卷信息,例如az container create通过 CLI,这将转换为底层docker run等价物。无需指定 docker 命令。

如何挂载文件共享: https ://docs.microsoft.com/en-us/azure/container-instances/container-instances-volume-azure-files

于 2018-06-18T21:38:11.020 回答