Chuyển đến nội dung chính

Docker: Mạng network bridge kết nối các container với nhau - Part 8

Trong bài viết này, mình sẽ hướng dẫn các bạn cách kết nối 2 container sử dụng ASP.NET Core với SQL Server.
Trong Docker, có 3 loại network được tự động tạo ra: bridge, host, và none

PS C:\WINDOWS\system32> docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
d665d2690c92   bridge           bridge    local
4029cb0d3764   host             host      local
0a2d8cf2eb08   none             null      local

Khi bạn run một container, bạn có thể sử dụng flag: --network để chỉ định loại network mà bạn muốn container chạy trên đó khi run. Vì mặc định được tạo ra bởi docker, nên bạn có thể sử dụng nó bất cứ khi nào cần.

Để giao tiếp với các container với nhau, 2 container phải nằm trong 1 network.

Trong bài viết này, mình làm 2 ví dụ. Tại sao có 2 ví dụ? Vì ví dụ đầu tiên sẽ tương đối đơn giản dễ hiểu. Ví dụ 2 sẽ có 1 chút rắc rối nhưng dựa trên ví dụ 1, bạn sẽ dễ dàng hiểu ra.

Các lệnh về network

Liệt kê network docker network ls Tạo 1 network
docker network create <network-name>
Xóa 1 network
docker network rm <network-name>
Kết nối 1 container vào 1 network
docker network connect <network-name> <container-name>
Kiểm tra thông tin mạng
docker network inspect <network-name>

Tạo network cho 2 container Ubuntu

Trong ví dụ đầu tiên, chúng ta sẽ liên kết 2 container Ubuntu với nhau. Chúng ta tạo 1 mạng driver là bridge đặt tên là Ubuntu-network.

Tạo network:

docker network create ubuntu-network
Tạo 2 container và connect tới Ubuntu-network
docker run --name ubuntuA -dit --network=ubuntu-network ubuntu
docker run --name ubuntuB -dit --network=ubuntu-network ubuntu

Chúng ta sẽ có mô hình

Kiểm tra bằng lệnh
docker network inspect ubunutu-network

Để kiểm tra xem ubuntuA có ping tới được ubuntuB hay không, chúng ta sử dụng lệnh ping

Mở bash:
docker exec -it ubuntuA "bash"
Cài đặt lệnh ping:
apt-get update && apt-get install -y iputils-ping
Sau đó bạn gõ:
ping -c 2 ubuntuB
64 bytes from ubuntuB.ubuntu-network (172.19.0.3): icmp_seq=1 ttl=64 time=0.323 ms
64 bytes from ubuntuB.ubuntu-network (172.19.0.3): icmp_seq=2 ttl=64 time=0.092 ms

--- ubuntuB ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.092/0.207/0.323/0.115 ms

Như vậy là bạn đã kết nối thành công giữa Ubuntu A và Ubuntu B

Kết nối ASP.NET Core với SQL Server

Bạn xem phần hướng dẫn để pull và tạo container cho SQL Server 2019: https://nhatkyhoctap.blogspot.com/2022/06/docker-cai-at-ms-sql-server-linux-voi.html

Đối với ứng dụng ASP.NET Core, bạn tải source code Github tại đây: https://github.com/anbinhtrong/AspNetSqlCompose

Dựa vào ví dụ 1, chúng ta tạo network dành cho ASP.NET Core với SQL Server

docker network create api-network
Với SQL Server, chúng ta vừa cho phép external network truy cập vào SQL Server và vừa cho phép ứng dụng ASP.NET truy cập vào SQL Server thông qua bridge api-network
docker network create api-network
Tạo container
docker run -e 'ACCEPT_EULA=Y' -e "SA_PASSWORD=Nhatkyhoctap#$1111" -p 1431:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -p 8080:80 --name contoso contoso -e "serverName=sql1,1433" -e "databaseName=ContosoUniversity" -e "userName=sa" -e "password=Nhatkyhoctap#$1111"
Để kết nối vào network api-network, chúng ta sử dụng lệnh connect
docker network connect api-network contoso
docker network connect api-network sql1
docker network inspect api-network


Bạn truy cập SQL Server từ bên ngoài vào qua địa chỉ localhost,1431. Nhưng nếu truy cập thông qua api-network sẽ là sql1,1433

Tham khảo

https://xuanthulab.net/mang-network-bridge-trong-docker-ket-noi-cac-container-voi-nhau.html

https://viblo.asia/p/tim-hieu-va-lam-viec-voi-docker-container-networks-p1-XqakEmmbkWK

Hi vọng với bài viết này sẽ giúp bạn hosting 1 project ASP.NET đơn giản sử dụng docker.

Chúc các bạn thành công!

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.