Dưới đây là những gì tôi đã làm để gắn một trong các thư mục máy chủ của tôi vào container. Điều này là khó khăn hơn âm thanh bởi vì chúng tôi muốn đạt được
- Bên trong container chúng ta sẽ có thể ghi vào thư mục.
- Bên ngoài vùng chứa, chúng ta sẽ có thể ghi vào các tệp và thư mục được tạo bên trong vùng chứa.
Sau khi đọc các bài viết khác nhau trực tuyến ( vấn đề hữu ích nhất là vấn đề github này ), đây là cách tôi giải quyết vấn đề này. Mẹo nhỏ là ánh xạ uid và gid của người dùng máy chủ đến uid và gid của người dùng bên trong container.
Giả sử tôi sẽ gắn kết /home/breakds/projects
vào cùng một vị trí trong container. Thư mục bên ngoài thuộc sở hữu của người dùng breakds
, có uid và gid 1000
.
Sau đó, tôi đã tạo một người dùng trong vùng chứa được gọi là debian
uid và gid 1000
cũng vậy (vì đó là người dùng không root đầu tiên). Sau đó tôi sẽ tạo một hồ sơ (lxc) trên máy chủ bằng cách
lxc profile edit breakds
Và dưới đây là nội dung của hồ sơ (tôi tin rằng nó ở định dạng yaml):
name: breakds
config:
raw.lxc: |
lxc.id_map =
lxc.id_map = u 0 165536 999
lxc.id_map = g 0 165536 999
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 166537 64535
lxc.id_map = g 1001 166537 64535
user.vendor-data: |
packages:
- bash
description: allow home dir mounting for breakds
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
projects:
path: /home/breakds/projects
source: /home/debian/projects
type: disk
Sau đó, áp dụng hồ sơ này cho container đó vĩnh viễn:
$ lxc profile apply <my container> breakds
Cái này cần phải dùng mẹo.
LƯU Ý : Xin lưu ý rằng trước khi chuyển sang cấu hình này, hãy đảm bảo rằng tất cả các tệp direcotries hoặc tệp có chủ sở hữu / nhóm là debian sẽ bị xóa (và có thể được tạo lại sau khi chuyển đổi). Điều này là do sau khi ánh xạ uid và gid, quyền sở hữu của họ sẽ trở nên không hợp lệ. Ban đầu tôi nghĩ rằng tôi chỉ lập bản đồ 1000 đến 1000 mọi thứ sẽ ổn, nhưng tôi nghĩ rằng tôi đã bỏ lỡ điều gì đó ở đây và thật tuyệt nếu ai đó có thể tư vấn về cách giải quyết vấn đề này mà không cần hack.