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 nat
chỉ định rằng ta đang sử dụng bảngnat
để dịch địa chỉ. -
-I PREROUTING
chỉ định rằng ta đang thêm luật vào chuỗi PREROUTING. -
-i eth0
chỉ định giao diện eth0 , là giao diện công khai mặc định trên Server. -
-p TCP
cho biết ta đang sử dụng giao thức TCP. -
-d $PUBLIC_IP
chỉ định địa chỉ IP đích cho luật . -
--dport $PORT
: chỉ định cổng đích (chẳng hạn như80
). -
-j DNAT
nói rằng ta muốn thực hiện một bước chuyển đến NAT đích (DNAT). -
--to-destination $CONTAINER_IP:$PORT
nó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 Elasticsearch, Logstash và Kibana (ELK Stack) trên Ubuntu 14.04
2017-12-01
Cách cài đặt và sử dụng TensorFlow trên Ubuntu 16.04
2017-12-01