‫Yêu cầu đối với bài giảng này là bạn đã xem các bài giảng về mạng trước đó và hiểu các khái
‫niệm chính về mạng Docker và các lệnh đi kèm với nó.
‫Được rồi.
‫Và bài giảng này, bạn sẽ học và chơi với DNS và cách nó ảnh hưởng đến các vùng chứa trong mạng tùy
‫chỉnh và mạng mặc định.
‫Chúng ta sẽ
‫xem xét nhanh tầm quan trọng của việc chúng ta có DNS tốt như thế nào vì bạn không thể dựa vào địa chỉ IP bên
‫trong các vùng chứa vì mọi thứ rất năng động. Chúng ta sẽ xem xét sự khác biệt giữa mạng mặc định và mạng
‫tùy chỉnh liên quan đến cách chúng xử lý với DNS.
‫Và sau đó, chúng tôi sẽ kiểm tra tùy chọn - liên kết cho chạy vùng chứa để bật DNS trên mạng cầu nối
‫mặc định.
‫Vì vậy, có một điều nữa rất quan trọng đối với tất cả các vùng chứa và mạng ảo này
‫và chúng nói chuyện với nhau; và đó là cách đặt tên. Bởi vì trong thế giới của các vùng chứa liên tục khởi động và
‫biến mất, di chuyển và mở rộng và thu hẹp, và tất cả sự tuyệt vời của những dịch vụ vi mô này mà
‫chúng ta đang thấy xuất hiện ở khắp mọi nơi, là chúng ta không còn có thể dễ dàng dựa vào địa chỉ IP như một cách để
‫nói chuyện từ điều này sang điều khác. Bởi vì chúng ta không thể giả định rằng các địa chỉ
‫IP thậm chí sẽ giống nhau.
‫Vùng chứa có thể biến mất hoặc nó có thể bị lỗi và sau đó Docker mang nó đến một nơi khác.
‫Nó chỉ là quá năng động và quá phức tạp để đối phó với điều đó.
‫Vì vậy, nó chỉ ra rằng có một giải pháp tích hợp cho việc này, và đó là đặt tên DNS. Docker sử dụng tên vùng chứa tương đương
‫với tên máy chủ cho các vùng chứa nói chuyện với nhau.
‫Bây giờ nếu bạn nhớ chúng tôi vừa có hai container đang chạy ...
‫nếu bạn nhớ Nginx nằm trên một mạng mới, được gọi là my_app_net.
‫Đúng.
‫Và có một hộp đựng trên đó. Bởi vì tôi đã tạo mạng mới này,
‫đó không phải là mạng cầu nối
‫mặc định, nó thực sự có một tính năng mới đặc biệt, đó là phân giải DNS tự động cho tất cả các vùng chứa trên mạng ảo
‫đó từ tất cả các vùng chứa khác trên mạng ảo đó bằng cách sử dụng tên vùng chứa của chúng.
‫Nếu tôi tạo vùng chứa thứ hai trên mạng ảo đó, chúng sẽ có thể tìm thấy nhau, bất kể địa
‫chỉ IP là gì, với tên vùng chứa của chúng.
‫Vì vậy, hãy thử điều này: docker container run name ... và chúng tôi sẽ gọi nó là nginx của tôi ... và chúng tôi sẽ chỉ định
‫mạng là mạng ứng dụng của tôi
‫từ hình ảnh nginx.
‫Bây giờ, nếu chúng ta nhìn vào mạng đó, chúng ta sẽ thấy 2 thùng chứa; và, nếu tôi thực hiện một
‫thực thi vùng chứa docker, từ vùng chứa mới mà tôi vừa tạo - rất tiếc, chúng tôi cũng
‫cần CNTT trong đó - Và chúng tôi thực hiện ping tới nginx mới, bạn
‫nhận thấy rằng phân giải DNS chỉ hoạt động. Điều này giúp bạn có một vùng chứa cực kỳ dễ dàng
‫và bạn cần đặt tệp cấu hình trong đó để nói chuyện, có thể giả sử máy chủ
‫PHP sẽ nói chuyện với phần phụ trợ MySQL. Ctrl-c ra khỏi đó, và bạn sẽ thấy rằng nó cũng hoạt động theo cách khác.
‫Nếu tôi nhảy vào vùng chứa nginx mới và tôi cố gắng ping ngnix của mình, bạn sẽ thấy rằng giải pháp hoạt động theo cả
‫hai cách.
‫Và đây là những gì giải quyết được một vấn đề lớn khi bạn xoay các thùng chứa vì bạn không thể dự đoán chúng
‫sẽ tồn tại trong bao lâu và vị trí của chúng có thể là một phút kể từ bây giờ trong thiết
‫kế sản xuất nơi bạn có một cụm Máy chủ Docker Swarm.
‫Vì vậy, nó có thể không thay đổi nhiều trên máy cục bộ của bạn, nhưng nếu bạn dừng 3 hoặc 4 vùng chứa,
‫sau đó bạn khởi động các vùng chứa giống nhau và bạn khởi động chúng theo một
‫thứ tự khác, chúng có thể không có cùng địa chỉ IP. Nhưng tên máy chủ hoặc tên vùng chứa của chúng sẽ
‫luôn giống nhau.
‫Và vì vậy bạn có thể dựa vào chúng.
‫Bây giờ tôi cần lưu ý, nếu chúng ta tạo danh sách mạng docker, mạng cầu nối mặc định có một nhược điểm ở đây.
‫Nó không có máy chủ DNS được tích hợp sẵn theo mặc định.
‫Vì vậy, bạn có thể sử dụng liên kết -.
‫Vì vậy, khi bạn tạo một vùng chứa, bạn sẽ nhận thấy có một tùy chọn liên kết và bạn thực sự có thể chỉ định các liên kết
‫thủ công giữa các vùng chứa trong mạng cầu nối mặc định đó.
‫Nhưng thực sự, việc tạo một mạng mới cho các ứng dụng của bạn dễ dàng hơn nhiều để bạn không phải
‫làm việc này mỗi lần.
‫Và trong phần tương lai, khi chúng ta nói về Docker Compose, bạn sẽ thấy việc này thậm chí còn dễ dàng hơn
‫như thế nào vì tính năng Compose tự động sẽ tạo ra các mạng ảo mới bất cứ khi nào bạn tạo một ứng dụng với nó.
‫Vì vậy, việc giao tiếp giữa các vùng chứa của bạn thậm chí còn dễ dàng hơn.
‫Tóm tắt lại, chúng tôi đã đề cập trong bài giảng này về việc các vùng chứa không thể thực sự, hoặc không thực sự nên dựa
‫vào địa chỉ IP để nói chuyện với nhau bởi vì chúng không thể dựa vào.
‫Và DNS đó thực sự là tiêu chuẩn ở đây cho cách chúng tôi thực hiện giao tiếp giữa các vùng chứa
‫trên cùng một máy chủ và trên các máy chủ.
‫Và vì vậy, tôi khuyên bạn nên luôn tạo các mạng tùy chỉnh vì theo cách đó dễ dàng hơn so với việc thực
‫hiện liên kết - liên kết mọi lúc.
‫Và sau đó, tôi đã đưa cho bạn một đoạn giới thiệu về Docker Compose và cách nó sẽ làm cho tất cả điều này trở
‫nên dễ dàng hơn, đặc biệt là mạng.