我正在尝试使用 LXC 分离我的数据库和 PHP 应用程序。
我目前在将我的代码部署到其中一个容器时遇到一些问题 - 我不明白这应该如何工作。
我当前的设置是一个 VPS,DeployHQ 通过 SSH 连接到它 - 从 GitHub 上传应用程序并运行一些命令。
但是这个解决方案似乎无法通过我的容器实现——所以我的问题是,我现在该怎么办?
我可以将代码发送到主机 - 但是如何将代码发送到我的容器,同时仍然确保来宾的用户权限正确?
答案1
最明显的方法是让 LXC 的行为与您的 VPS 一样。为此,您可能需要在主机上设置 NAT 规则,将外部端口转发到 LXC 容器的端口 22。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT --to 10.0.3.123:22
(将 eth0 上的端口 2022 转发到 IP 为 10.0.3.123 的容器的端口 22 上)。
另一种方法是通过主机文件系统执行此操作,有两种解决方案:
- 直接复制到 /var/lib/lxc/CONTAINER/rootfs/...
- 在 /var/lib/lxc/CONTAINER/fstab 中设置主机上的路径到容器中的路径的绑定挂载。(例如,“/srv/site srv/site none bind,ro 0 0”将设置主机上的 /srv/site 到容器中的 /srv/site 的只读绑定挂载。这两个路径必须在容器启动之前存在。
在这两种情况下,您都需要确保所有权与容器中的所有权相匹配,因此您可能希望主机上的路径的任何更新都执行正确的 chown -R 操作。