Expose Port LXD Container

Expose Port LXD Container

Bagaiamana cara akses aplikasi yang ada di dalam LXD Container dari luar host? Bagaimana cara kita ssh ke dalam lxd container dari luar host? Caranya ada dua. Yang petama adalah dengan iptables, yep kita bisa bikin rule PREROUTING dan DNAT. Yang kedua, pakai fitur dari LXD namanya proxy device, dengan syarat LXD yang dipakai sudah versi 3. Cara menggunakan iptables sudah sangat banyak dibahas, jadi aku hanya akan post cara pakai LXD proxy. Misal aku punya lxd container bernama haproxy, didalam container dia berjalan di port 80 dan 443.

1
2
3
4
5
6
7
lxc list   
+------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
|    NAME    |  STATE  |         IPV4          |                     IPV6                      |    TYPE    | SNAPSHOTS |
+------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
+------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| haproxy    | RUNNING | 10.174.126.81 (eth0)  | fd42:deee:e13a:f247:216:3eff:feeb:91ea (eth0) | PERSISTENT | 0         |
+------------+---------+-----------------------+-----------------------------------------------+------------+-----------+

untuk expose port 80 dan 443 milik haproxy ke luar host, maka dari dalam host kita jalankan perintah berikut:

1
2
lxc config device add haproxy myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
lxc config device add haproxy myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:80

Jadi misal host ku ip-nya 192.168.1.3, maka jika aku buka browser di komputer lain dalam satu network dan buka ip host ku, akan diteruskan ke container haproxy, yang muncul di browser adalah konten dari haproxy.

Untuk ssh juga sama,

1
lxc config device add haproxy myssh proxy listen=tcp:0.0.0.0:33331 connect=tcp:127.0.0.1:22

Untuk setiap yang akses ip host dengan port 33331 akan diteruskan ke dalam container port 22. Jadi misal host ku ip-nya 192.168.1.3, maka jika menjalankan ssh user@192.168.1.3 -p33331 akan diteruskan ke dalam container haproxy port 22.

Sangat mudah ya, silakan dieksplore lagi di dokumentasi lxd.