我有一个Docker容器,里面设置了MinGW编译器。我想用它来开发。那就是我想编译,测试,编辑,编译,测试......
容器也将在CI管道中使用,并最终用于生成生产版本。通过使用相同的容器,我们确保构建环境的一致性。
我的主机拥有用于代码编辑等的开发工具,而容器有编译器,所以很明显需要共享文件。
我已经设置了一个卷。很遗憾,我无法使用我的用户帐户访问它:
// GET: Information/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Information information = db.Informations.Find(id);
if (information == null)
{
return HttpNotFound();
}
return View(information);
}
// POST: Information/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Information information = db.Informations.Find(id);
db.Informations.Remove(information);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
我的用户在群组泊坞窗中,但群组泊坞窗没有对/ var / lib / docker的读取权限,因此无法访问卷的_data目录。
我尝试过欺骗并使用sudo调整文件夹权限,以便组docker在路径中一直具有读取权限,但这些权限会在重新启动时重写 - 毫无疑问,当docker服务器启动时。
有人可以找到解决方法吗?我尝试过使用符号链接,但它们总是继承路径元素的最严格权限。
答案 0 :(得分:1)
当我最初阅读文档时,看起来只能使用命名卷,但我刚刚发现目录也可以用作源代码。 E.g:
mkdir /home/alastair/mingw_build
docker run -v /home/alastair/mingw_build:/home/mingw_build/build mingw_build
由于我想使用相同的容器并运行CI测试的脚本和本地开发,我在.bashrc中设置了一个环境变量,并在我的运行脚本中测试它。如果它存在,我使用它指向的目录,如果不存在,我使用命名容器,必要时创建它。
答案 1 :(得分:0)
Docker包含一个基于用户名称空间的用户/组重新映射功能 - 默认情况下未启用。
按照以下说明在docker守护程序上启用“userne-remap”:https://docs.docker.com/engine/security/userns-remap/