2014-07-07 28 views
29

Tôi đang cố gắng hiểu điều gì đang xảy ra dưới sự che chở của gói mạng đến từ dây được kết nối với máy chủ và hướng đến ứng dụng bên trong vùng chứa Docker.Vùng chứa docker có ngăn xếp TCP/IP của riêng nó không?

Nếu đó là một máy ảo cổ điển, tôi biết rằng một gói tin đến máy chủ sẽ được truyền bởi hypervisor (nói VMware, VBox, v.v.) cho NIC ảo của máy ảo và từ đó thông qua ngăn xếp TCP/IP của hệ điều hành khách, cuối cùng cũng đạt được ứng dụng.

Trong trường hợp của Docker, tôi biết rằng một gói tin đến trên máy chủ được chuyển tiếp từ giao diện mạng của máy chủ để cầu docker0, được kết nối với một cặp veth kết thúc vào giao diện ảo eth0 bên trong container . Nhưng sau đó thì? Vì tất cả các thùng chứa Docker sử dụng hạt nhân chủ, có đúng là giả định rằng gói được xử lý bởi ngăn xếp TCP/IP của hạt nhân chủ? Nếu vậy, làm thế nào?

Tôi thực sự muốn đọc giải thích chi tiết chi tiết (hoặc nếu bạn biết một tài nguyên cảm thấy tự do liên kết nó) về những gì thực sự xảy ra dưới mui xe. Tôi đã đọc kỹ trang this, nhưng nó không nói mọi thứ.

Cảm ơn bạn đã trả lời trước.

+1

Có, ngăn xếp TCP/IP của máy chủ được sử dụng. Sau khi đọc trang bạn đã liên kết đến, thật khó để thêm nhiều hơn nữa ngoại trừ việc đọc mã nguồn kernel và mã nguồn của trình docker- bạn có câu hỏi cụ thể nào không? – nos

+0

Cảm ơn bạn đã bình luận. Ví dụ, tôi không biết rõ dữ liệu được truyền đi như thế nào từ cầu 'docker0' tới' eth0' của máy chủ: Tôi đã cố sử dụng wireshark nhưng tôi chỉ có thể thấy các gói được trao đổi từ 'docker0' và' vethXYZ'; Tôi cũng giả sử rằng giữa 'docker0' và' eth0' có một NAT kể từ khi thay đổi địa chỉ nhưng tôi không tìm thấy tài liệu về nó. –

+0

Phải, hầu hết trong số đó, bao gồm các quy tắc NAT được sử dụng bởi docker được giải thích trong tài liệu đó. – nos

Trả lời

9

Ngăn xếp mạng, như trong "mã", chắc chắn không có trong vùng chứa, trong hạt nhân chỉ có một máy chủ được chia sẻ bởi máy chủ và tất cả các vùng chứa (bạn đã biết điều này). Mỗi vùng chứa có một không gian tên riêng biệt là mạng, có nghĩa là nó có giao diện mạng và các bảng định tuyến riêng.

Dưới đây là một bài viết ngắn giới thiệu các khái niệm với một số ví dụ: http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ và tôi thấy bài viết này hữu ích quá: http://containerops.org/2013/11/19/lxc-networking/

Tôi hy vọng điều này cung cấp cho bạn đủ gợi ý để đào sâu hơn.

Các vấn đề liên quan