Cách thiết lập và sử dụng LXD trên Ubuntu 16.04
Vùng chứa Linux là một group các quy trình được tách biệt với phần còn lại của hệ thống thông qua việc sử dụng các tính năng bảo mật của nhân Linux, chẳng hạn như không gian tên và group điều khiển. Nó là một cấu trúc tương tự như một máy ảo, nhưng nó nhẹ hơn nhiều; bạn không có chi phí để chạy một kernel bổ sung hoặc mô phỏng phần cứng. Điều này nghĩa là bạn có thể dễ dàng tạo nhiều containers trên cùng một server .Ví dụ: hãy tưởng tượng rằng bạn có một server chạy nhiều trang web cho khách hàng của bạn . Trong cài đặt truyền thống, mỗi trang web sẽ là một server ảo của cùng một version của web server Apache hoặc Nginx. Nhưng với containers Linux, mỗi trang web có thể được cài đặt trong containers riêng, với web server riêng. Sử dụng containers Linux, bạn gói ứng dụng của bạn và các phụ thuộc của nó trong một containers mà không ảnh hưởng đến phần còn lại của hệ thống.
LXD cho phép bạn tạo và quản lý các containers này. LXD cung cấp dịch vụ siêu giám sát để quản lý toàn bộ vòng đời của các container . Trong hướng dẫn này, bạn sẽ cấu hình LXD và sử dụng nó để chạy Nginx trong một containers . Sau đó, bạn sẽ định tuyến lưu lượng truy cập đến containers để làm cho trang web có thể truy cập được từ Internet.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần những thứ sau:
- Một server Ubuntu 16.04, được cấu hình theo hướng dẫn Cài đặt server ban đầu với Ubuntu 16.04 , với user không phải root có quyền sudo và firewall .
- Theo tùy chọn, thêm 20GB Bộ nhớ khối trở lên theo hướng dẫn Bắt đầu với Bộ nhớ khối DigitalOcean . Bạn có thể sử dụng điều này để lưu trữ tất cả dữ liệu liên quan đến containers .
Bước 1 - Cấu hình LXD
LXD đã được cài đặt trên Ubuntu, nhưng nó cần được cấu hình phù hợp trước khi bạn có thể sử dụng nó trên server . Bạn phải cài đặt account user của bạn để quản lý các containers , sau đó cấu hình loại backend lưu trữ để lưu trữ các containers và cấu hình mạng.
 Đăng nhập vào  server  bằng account   user  không phải root. Sau đó, thêm  user  của bạn vào  group  lxd để bạn có thể sử dụng nó để thực hiện tất cả  các việc  quản lý containers :
- sudo usermod --append --groups lxd sammy 
Đăng xuất khỏi server và đăng nhập lại để phiên SSH mới của bạn sẽ được cập nhật với quyền thành viên group mới. Sau khi đăng nhập, bạn có thể bắt đầu cấu hình LXD.
 Bây giờ hãy cấu hình phần  backend  lưu trữ. Phần  backend  lưu trữ được đề xuất cho LXD là hệ thống file  ZFS, được lưu trữ trong một file  được phân bổ trước hoặc bằng cách sử dụng Bộ nhớ khối . Để sử dụng hỗ trợ ZFS trong LXD, hãy cập nhật danh sách gói của bạn và cài đặt gói zfsutils-linux :
- sudo apt-get update 
- sudo apt-get install zfsutils-linux 
 Đến đây bạn  có thể cấu hình LXD. Bắt đầu quá trình khởi tạo LXD bằng lệnh lxd init :
- sudo lxd init 
Bạn sẽ được yêu cầu chỉ định các chi tiết cho phần backend lưu trữ. Sau khi hoàn thành cấu hình đó, bạn sẽ cấu hình mạng cho các containers .
 Đầu tiên, bạn sẽ được hỏi xem bạn có muốn  cấu hình  một  group  lưu trữ mới hay không. Bạn nên trả lời yes. .
Do you want to configure a new storage pool (yes/no) [default=yes]? yes Sau đó, bạn sẽ  được yêu cầu  về phần  backend  lưu trữ và bạn sẽ có hai lựa chọn: dir hoặc zfs . Tùy chọn dir yêu cầu LXD lưu trữ các containers  trong các folder  trên hệ thống file  của  server . Tùy chọn zfs sử dụng hệ thống file  kết hợp ZFS và trình quản lý  dung lượng  hợp lý.
  Ta  sẽ sử dụng tùy chọn zfs . Bằng cách sử dụng zfs ,  ta  nhận được cả hiệu quả lưu trữ và khả năng phản hồi tốt hơn. Ví dụ: nếu  ta  tạo mười containers  từ cùng một  containers images   ban đầu, tất cả chúng đều sử dụng không gian đĩa chỉ của một  containers images   duy nhất. Từ đó trở đi, chỉ những thay đổi của chúng đối với  containers images   ban đầu sẽ được lưu trữ trong phần  backend  lưu trữ.
OutputName of the storage backend to use (dir or zfs) [default=zfs]: zfs Khi bạn chọn zfs ,  bạn cần  tạo một  group  ZFS mới và đặt tên cho  group . Chọn yes để tạo  group  và gọi lxd :
OutputCreate a new ZFS pool (yes/no) [default=yes]? yes Name of the new ZFS pool [default=lxd]: lxd  Sau đó, bạn sẽ được hỏi có muốn sử dụng thiết bị chặn hiện có không:
OutputWould you like to use an existing block device (yes/no) [default=no]? Nếu bạn nói yes , bạn sẽ phải cho LXD biết nơi tìm thiết bị đó. Nếu bạn nói no , LXD sẽ sử dụng một file  được phân bổ trước. Với tùy chọn này, bạn sẽ sử dụng không gian trống trên chính  server .
Có hai phần tiếp theo, tùy thuộc vào việc bạn muốn sử dụng file được phân bổ trước hay thiết bị khối. Làm theo bước thích hợp cho trường hợp của bạn. Khi bạn đã chỉ định cơ chế lưu trữ, bạn sẽ cấu hình các tùy chọn mạng cho containers của bạn .
Tùy chọn 1 - Sử dụng file được phân bổ trước
Bạn sẽ sử dụng file được phân bổ trước nếu bạn không có quyền truy cập vào block storage device riêng biệt để lưu trữ các containers . Làm theo các bước sau để cấu hình LXD để sử dụng file được phân bổ trước để lưu trữ các containers .
 Đầu tiên, khi được yêu cầu sử dụng thiết bị chặn hiện có, hãy nhập no :
OutputWould you like to use an existing block device (yes/no) [default=no]? no Tiếp theo,  bạn cần  chỉ định kích thước của thiết bị vòng lặp , đó là cái mà LXD gọi là file  được phân bổ trước.
 Sử dụng kích thước mặc định được đề xuất cho file  được phân bổ trước:
OutputSize in GB of the new loop device (1GB minimum) [default=15]: 15 Theo luật chung, 15GB thực sự là kích thước nhỏ nhất mà bạn nên tạo; bạn muốn phân bổ trước đủ dung lượng để bạn có ít nhất 10GB dung lượng trống sau khi tạo containers của bạn .
Sau khi thiết bị được cấu hình , bạn cần cấu hình cài đặt mạng. Chuyển đến Bước 2 để tiếp tục cài đặt .
Tùy chọn 2 - Sử dụng thiết bị chặn
Nếu bạn định sử dụng Block Storage làm chương trình backend lưu trữ của bạn , bạn cần tìm thiết bị trỏ đến dung lượng Block Storage mà bạn đã tạo để chỉ định nó trong cấu hình của LXD. Đi tới tab Volumes trong control panel DigitalOcean , xác định vị trí dung lượng của bạn, bấm vào More pop-up, và sau đó bấm vào hướng dẫn Config.
 Định vị thiết bị bằng cách xem lệnh để định dạng âm lượng. Cụ thể, hãy tìm đường dẫn được chỉ định trong sudo mkfs.ext4 -F . Không chạy bất kỳ lệnh nào từ trang đó vì  ta  chỉ cần tìm đúng tên thiết bị để cung cấp cho LXD. Hình sau đây cho thấy một ví dụ về tên thiết bị của ổ đĩa. Bạn chỉ cần phần được gạch dưới bởi dòng màu đỏ: 
Bạn cũng có thể xác định tên thiết bị bằng lệnh sau:
- ls -l /dev/disk/by-id/ 
- total 0 
- lrwxrwxrwx 1 root root  9 Sep  16 20:30 scsi-0DO_Volume_volume-fra1-01 -> ../../sda 
-  
Trong trường hợp này, tên thiết bị cho /dev/disk/by-id/scsi-0D0_Volume_volume-fra1-01 là /dev/disk/by-id/scsi-0D0_Volume_volume-fra1-01 , mặc dù tên thiết bị của bạn có thể khác.
 Khi bạn xác định được tên thiết bị cho ổ đĩa, hãy tiếp tục cài đặt LXD. Khi bạn  được yêu cầu  về việc sử dụng thiết bị chặn hiện có, hãy chọn yes và cung cấp đường dẫn đến thiết bị của bạn:
Output of the "lxd init" commandWould you like to use an existing block device (yes/no) [default=no]? yes Path to the existing block device: /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-01 Khi bạn chỉ định đĩa, bạn cần cấu hình các tùy chọn mạng.
Bước 2 - Cấu hình mạng
Khi bạn đã cấu hình phần backend lưu trữ, bạn sẽ được yêu cầu cấu hình mạng cho LXD.
 Đầu tiên, LXD hỏi bạn có muốn làm cho nó có thể truy cập qua mạng hay không. Chọn yes sẽ cho phép bạn quản lý LXD từ máy tính local   của bạn  mà không cần phải SSH tới  server  này. Giữ giá trị mặc định là no :
Output of the "lxd init" command — LXD over the networkWould you like LXD to be available over the network (yes/no) [default=no]? no Nếu bạn muốn bật tùy chọn này, vui lòng đọc LXD 2.0: Server từ xa và di chuyển containers để tìm hiểu thêm.
Sau đó, ta được yêu cầu cấu hình cầu nối mạng cho các containers LXD. Điều này cho phép các tính năng sau:
- Mỗi containers tự động nhận một địa chỉ IP riêng.
- Các containers có thể giao tiếp với nhau qua mạng riêng.
- Mỗi containers có thể bắt đầu kết nối với Internet.
- Các containers bạn tạo vẫn không thể truy cập được từ Internet; bạn không thể tạo kết nối từ Internet và đến containers trừ khi bạn bật rõ ràng. Bạn sẽ học cách cho phép truy cập vào một containers cụ thể trong bước tiếp theo.
 Khi được yêu cầu  cấu hình  cầu LXD, hãy chọn yes :
Output of the "lxd init" command — Networking for the containersDo you want to configure the LXD bridge (yes/no) [default=yes]? yes  Sau đó, bạn sẽ thấy hộp thoại sau:
Xác nhận bạn muốn cài đặt cầu nối mạng.
Bạn cần đặt tên cho cây cầu. Chấp nhận giá trị mặc định.
Bạn cần thực hiện cấu hình mạng cho cả IPv4 và IPv6. Trong hướng dẫn này, ta sẽ chỉ làm việc với IPv4.
Khi được yêu cầu cài đặt mạng con IPv4, hãy chọn Có . Bạn sẽ được thông báo rằng nó đã cấu hình một mạng con ngẫu nhiên cho bạn. Chọn Ok để tiếp tục.
Khi được yêu cầu nhập địa chỉ IPv4 hợp lệ, hãy chấp nhận giá trị mặc định.
Khi được yêu cầu nhập mặt nạ CIDR hợp lệ, hãy chấp nhận giá trị mặc định.
Khi được yêu cầu nhập địa chỉ DHCP đầu tiên, hãy chấp nhận giá trị mặc định. Thực hiện tương tự đối với địa chỉ DHCP cuối cùng, cũng như số lượng client DHCP tối đa.
Chọn Có khi được yêu cầu NAT lưu lượng IPv4.
Khi được yêu cầu cấu hình mạng con IPv6, hãy chọn Không . Bạn sẽ thấy kết quả sau khi cài đặt mạng hoàn tất:
OutputWarning: Stopping lxd.service, but it can still be activated by:   lxd.socket LXD has been successfully configured. Bạn đã sẵn sàng tạo containers của bạn .
Bước 3 - Tạo containers Nginx
 Bạn đã  cấu hình  thành công LXD và bây giờ bạn đã sẵn sàng để tạo và quản lý containers  đầu tiên  của bạn . Bạn quản lý containers  bằng lệnh lxc .
 Sử dụng lxc list để xem các containers  đã cài đặt sẵn:
- lxc list 
Bạn sẽ thấy kết quả sau:
Output of the "lxd list" commandGenerating a client certificate. This may take a minute... If this is your first time using LXD, you should also run: sudo lxd init To start your first container, try: lxc launch ubuntu:16.04  +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+ Vì đây là lần đầu tiên lệnh lxc giao tiếp với trình siêu giám sát LXD,  kết quả  cho bạn biết rằng lệnh đã tự động tạo certificate   ứng dụng client  để giao tiếp an toàn với LXD. Sau đó, nó hiển thị một số thông tin về cách  chạy  containers . Cuối cùng, lệnh hiển thị danh sách các containers  trống, dự kiến vì  ta  chưa tạo bất kỳ containers  nào.
 Hãy tạo một containers  chạy Nginx. Để làm như vậy,  ta  sẽ sử dụng lệnh lxc launch để tạo và khởi động một containers  Ubuntu 16.04 có tên là webserver .
 Tạo containers  webserver :
- lxc launch ubuntu:x webserver 
Dấu x trong ubuntu:x là một phím tắt cho chữ cái đầu tiên của Xenial, tên mã của Ubuntu 16.04. ubuntu: là định danh cho repository  hình ảnh LXD được cấu hình sẵn. Bạn cũng có thể sử dụng ubuntu:16.04 cho tên hình ảnh.
 Lưu ý : Bạn có thể tìm thấy danh sách đầy đủ của tất cả các hình ảnh Ubuntu có sẵn bằng cách chạy lxc image list ubuntu: và các bản phân phối khác bằng cách chạy các lxc image list images:
Vì đây là lần đầu tiên bạn tạo containers , lệnh này download containers images từ Internet và lưu trữ nó vào bộ nhớ cache local để nếu bạn tạo containers mới, nó sẽ được tạo nhanh hơn. Bạn sẽ thấy kết quả này khi containers mới của bạn được tạo:
OutputGenerating a client certificate. This may take a minute... If this is your first time using LXD, you should also run: sudo lxd init To start your first container, try: lxc launch ubuntu:16.04  Creating webserver Retrieving image: 100% Starting webserver Bây giờ containers  đang chạy, hãy sử dụng lệnh lxc list để hiển thị thông tin về nó:
- lxc list 
Đầu ra hiển thị một bảng với tên của mỗi containers , trạng thái hiện tại của nó, địa chỉ IP, loại của nó và liệu có ảnh chụp nhanh được chụp hay không.
+-----------+---------+-----------------------+------+------------+-----------+ |  NAME     |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS | +-----------+---------+-----------------------+------+------------+-----------+ | webserver | RUNNING | 10.10.10.100 (eth0)   |      | PERSISTENT | 0         | +-----------+---------+-----------------------+------+------------+-----------+ Lưu ý: Nếu bạn đã bật IPv6 trong LXD,  kết quả  của lệnh lxc list có thể quá rộng đối với màn hình của bạn. Thay vào đó, bạn có thể sử dụng lxc list --columns ns4tS chỉ hiển thị tên, trạng thái, IPv4, loại và liệu có sẵn ảnh chụp nhanh hay không.
Lưu ý địa chỉ IPv4 của containers . Bạn cần nó để cấu hình firewall của bạn để cho phép lưu lượng truy cập từ thế giới bên ngoài.
Bây giờ, hãy cài đặt Nginx bên trong containers :
Bước 4 - Cấu hình containers Nginx
 Hãy kết nối với containers  webserver và cấu hình  web server .
 Kết nối với containers  bằng lệnh thi lxc exec , lấy tên của containers  và các lệnh để thực thi:
- lxc exec webserver -- sudo --login --user ubuntu 
Đầu tiên -- chuỗi biểu thị rằng các tham số lệnh cho lxc nên dừng lại ở đó, và phần còn lại của dòng sẽ được thông qua như là lệnh được thực thi bên trong container. Lệnh này là sudo --login --user ubuntu , cung cấp  shell  đăng nhập cho account  ubuntu được cấu hình sẵn bên trong containers .
 Lưu ý: Nếu bạn cần kết nối với containers  dưới dạng root , hãy sử dụng lệnh lxc exec webserver -- /bin/bash để thay thế.
Khi bên trong containers , dấu nhắc shell của bạn bây giờ trông giống như sau.
Outputubuntu@webserver:~$  User  ubuntu này trong containers  có quyền truy cập sudo được  cấu hình  trước và có thể chạy các lệnh sudo mà không cần cung cấp password . Vỏ này được giới hạn trong giới hạn của  container . Bất cứ thứ gì bạn chạy trong  shell  này sẽ nằm trong containers  và không thể thoát đến  server  lưu trữ.
Hãy cài đặt Nginx trong containers này. Cập nhật danh sách gói của version Ubuntu bên trong containers và cài đặt Nginx:
- sudo apt-get update 
- sudo apt-get install nginx 
Sau đó, chỉnh sửa trang web mặc định cho trang web này và thêm một số văn bản làm rõ rằng trang web này được lưu trữ trong containers  webserver . Mở file  /var/www/html/index.nginx-debian.html :
- sudo nano /var/www/html/index.nginx-debian.html 
Thực hiện thay đổi sau đối với file :
<!DOCTYPE html> <html> <head> <title>Welcome to nginx on LXD container webserver!</title> <style>     body {         width: 35em;         margin: 0 auto;         font-family: Tahoma, Verdana, Arial, sans-serif;     } </style> </head> <body> <h1>Welcome to nginx on LXD container webserver!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> ...  Ta  đã chỉnh sửa file  ở hai nơi và đặc biệt thêm văn bản on LXD container webserver . Lưu file  và thoát khỏi  editor .
Bây giờ đăng xuất khỏi containers và quay trở lại server lưu trữ:
- logout 
Sử dụng curl để kiểm tra xem  web server  trong containers  đang hoạt động. Bạn  cần  địa chỉ IP của các containers  web mà bạn đã tìm thấy bằng cách sử dụng lệnh lxd list trước đó.
- curl http://10.10.10.100/ 
Đầu ra phải là:
Output<!DOCTYPE html> <html> <head> <title>Welcome to nginx on LXD container webserver!</title> <style>     body {         width: 35em;         margin: 0 auto;         font-family: Tahoma, Verdana, Arial, sans-serif;     } </style> </head> <body> <h1>Welcome to nginx on LXD container webserver!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> ... Web server đang hoạt động, nhưng ta chỉ có thể truy cập nó thông qua IP riêng. Hãy định tuyến các yêu cầu bên ngoài tới containers này để mọi người có thể truy cập trang web của ta .
Bước 5 - Chuyển tiếp các kết nối đến đến containers Nginx
 Phần cuối cùng của câu đố là kết nối containers   web server  với Internet. Nginx được cài đặt trong một containers  và theo mặc định, không thể truy cập được từ Internet.  Ta  cần  cài đặt   server   của bạn  để chuyển tiếp bất kỳ kết nối nào mà nó có thể nhận được từ Internet trên cổng 80 tới containers  webserver . Để làm điều này,  ta  sẽ tạo một  luật  iptables để chuyển tiếp các kết nối. Bạn có thể tìm hiểu thêm về IPTables trong Cách hoạt động của IPtables Firewall và IPtables Essentials: Common Firewall Rules and Commands .
 Lệnh iptables yêu cầu hai địa chỉ IP: địa chỉ IP công khai của  server  ( your_server_ip ) và địa chỉ IP riêng của containers  nginx ( your_webserver_container_ip ) mà bạn có thể lấy bằng lệnh lxc list .
Thực thi lệnh này để tạo luật :
- PORT=80 PUBLIC_IP=your_server_ip CONTAINER_IP=your_container_ip \ 
- sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Nginx container"' 
Đây là cách lệnh được chia nhỏ:
-  -t natchỉ định rằng ta đang sử dụng bảngnatđể dịch địa chỉ.
-  -I PREROUTINGchỉ định rằng ta đang thêm luật vào chuỗi PREROUTING.
-  -i eth0chỉ định giao diện eth0 , là giao diện công khai mặc định trên Server.
-  -p TCPcho biết ta đang sử dụng giao thức TCP.
-  -d $PUBLIC_IPchỉ định địa chỉ IP đích cho luật .
-  --dport $PORT: chỉ định cổng đích (chẳng hạn như80).
-  -j DNATnói rằng ta muốn thực hiện một bước chuyển đến NAT đích (DNAT).
-  --to-destination $CONTAINER_IP:$PORTnói rằng ta muốn yêu cầu chuyển đến địa chỉ IP của containers cụ thể và cổng đích.
 Lưu ý: Bạn có thể sử dụng lại lệnh này để  cài đặt   luật  chuyển tiếp đơn giản bằng cách đặt các biến PORT , PUBLIC_IP và CONTAINER_IP ở đầu dòng. Chỉ cần thay đổi các giá trị được đánh dấu.
Bạn có thể liệt kê các luật IPTables bằng cách chạy lệnh này:
- sudo iptables -t nat -L PREROUTING 
Bạn sẽ thấy kết quả tương tự như sau:
Output Chain PREROUTING (policy ACCEPT) target     prot opt source               destination          DNAT       tcp  --  anywhere             your_server_ip       tcp dpt:http /* forward to this container */ to:your_container_ip:80 ... Bây giờ, hãy kiểm tra xem  web server  có  có thể  truy cập được từ Internet hay không bằng cách truy cập nó từ máy tính local  của bạn bằng lệnh curl như sau:
- curl --verbose  'http://your_server_ip' 
Bạn sẽ thấy các tiêu đề theo sau là nội dung của trang web bạn đã tạo trong containers :
Output*   Trying your_server_ip... * Connected to your_server_ip (your_server_ip) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.47.0 > Accept: */* >  < HTTP/1.1 200 OK < Server: nginx/1.10.0 (Ubuntu) ... <!DOCTYPE html> <html> <head> <title>Welcome to nginx on LXD container webserver!</title> <style>     body { ... Điều này xác nhận các yêu cầu sẽ được chuyển đến containers .
 Cuối cùng, để lưu  luật  firewall  để nó được áp dụng lại sau khi khởi động lại, hãy cài đặt gói iptables-persistent :
- sudo apt-get install iptables-persistent 
Khi cài đặt gói, bạn sẽ được yêu cầu lưu các luật firewall hiện tại. Chấp nhận và lưu tất cả các luật hiện hành.
Khi bạn khởi động lại máy của bạn , luật firewall sẽ xuất hiện. Ngoài ra, dịch vụ Nginx trong containers LXD của bạn sẽ tự động khởi động lại.
Đến đây bạn đã cài đặt mọi thứ, hãy xem làm thế nào để chia nhỏ nó.
Bước 5 - Dừng và tháo containers
Bạn có thể quyết định rằng bạn muốn tháo hộp chứa và thay thế nó. Hãy xem qua quá trình đó:
 Để dừng containers , hãy sử dụng lxc stop :
- lxc stop webserver 
Sử dụng lệnh lxc list để xác minh trạng thái.
Output+-----------+---------+------+------+------------+-----------+ |   NAME    |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS | +-----------+---------+------+------+------------+-----------+ | webserver | STOPPED |      |      | PERSISTENT | 0         | +-----------+---------+------+------+------------+-----------+ Để xóa containers , hãy sử dụng lxc delete :
- lxc delete webserver 
Chạy lại lxc list cho thấy rằng không có containers  nào đang chạy:
Output+------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+ Sử dụng lệnh lxc help để xem các tùy chọn bổ sung.
Để xóa luật firewall định tuyến lưu lượng truy cập đến containers , trước tiên hãy tìm luật trong danh sách các luật bằng lệnh này, lệnh này liên kết số dòng với mỗi luật :
- sudo iptables -t nat -L PREROUTING --line-numbers 
Bạn sẽ thấy luật của bạn , có tiền tố là một số dòng, như sau:
OutputChain PREROUTING (policy ACCEPT) num  target     prot opt source               destination 1    DNAT       tcp  --  anywhere             your_server_ip      tcp dpt:http /* forward to the Nginx container */ to:your_container_ip Sử dụng số dòng đó để xóa luật :
- sudo iptables -t nat -D PREROUTING 1 
Đảm bảo luật đã biến mất bằng cách liệt kê lại các luật :
`sudo iptables -t nat -L PREROUTING --line-numbers` Luật sẽ không còn:
OutputChain PREROUTING (policy ACCEPT) num  target     prot opt source               destination Bây giờ hãy lưu các thay đổi để luật không quay trở lại khi bạn khởi động lại server của bạn :
- sudo netfilter-persistent save 
Như vậy, bạn có thể hiển thị một containers khác với cài đặt của bạn và thêm luật firewall mới để chuyển tiếp lưu lượng truy cập đến containers đó.
Kết luận
Bạn đã cài đặt một trang web bằng Nginx chạy trong containers LXD. Từ đây, bạn có thể cấu hình nhiều trang web hơn, mỗi trang web được giới hạn trong containers riêng và sử dụng Reverse Proxy để hướng lưu lượng truy cập đến containers thích hợp. Hướng dẫn Cách lưu trữ Nhiều Trang Web với Nginx và HAProxy Sử dụng LXD trên Ubuntu 16.04 sẽ hướng dẫn bạn cách cài đặt .
LXD cũng cho phép bạn chụp nhanh trạng thái đầy đủ của các containers , điều này giúp bạn dễ dàng tạo bản backup và cuộn các containers trở lại sau đó. Và nếu bạn cài đặt LXD trên hai server khác nhau, thì bạn có thể kết nối chúng và di chuyển containers giữa các server qua Internet.
Để biết thêm về LXD, hãy xem loạt bài đăng trên blog này về LXD 2.0 được viết bởi người bảo trì LXD.
Bạn cũng có thể thử LXD trực tuyến và làm theo hướng dẫn trên web để thực hành nhiều hơn.
Các tin liên quan
Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 16.042018-02-20
Cách thiết lập vsftpd cho Thư mục người dùng trên Ubuntu 16.04
2018-02-20
Cách thiết lập đường ống tích hợp liên tục với GitLab CI trên Ubuntu 16.04
2018-01-26
Cách cài đặt Swift và Vapor trên Ubuntu 16.04
2018-01-25
Cách cài đặt và cấu hình GitLab trên Ubuntu 16.04
2018-01-24
Cách cài đặt và bảo mật Grafana trên Ubuntu 16.04
2017-12-27
Cách cài đặt Prometheus trên Ubuntu 16.04
2017-12-14
Cách theo dõi cảnh báo Nagios với Alerta trên Ubuntu 16.04
2017-12-13
Cách cài đặt và sử dụng TensorFlow trên Ubuntu 16.04
2017-12-01
Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên Ubuntu 14.04
2017-12-01
 

