Performance của app có bị giảm khi dùng docker?
M có thử sài docker để chạy 1 app nodejs helloworld thi kết quả như sau, ko dùng docker thì kết quả số request handle đc x3 lần. (M sài cả swarm thêm 3 container cũng thế) Vậy sài docker để làm gì vậy ?
3 CÂU TRẢ LỜI
Bạn dùng Docker for Mac nên nó chạy trong máy ảo, performance sẽ kém hơn, bạn thử chạy trên Linux xem sao. Có thể share code để mình chạy thử được không, mình sẽ share kết quả với bạn.
Ứng dụng hello world nodejs thôi bạn, m copy paste phần get started bằng python của docker vào thôi ý. Docker tưởng chạy môi trường nào cũng ok chứ, thế té ra là vẫn ảo hóa à ??
Nếu chạy trên MacOS thì Docker gặp vấn đề về sync dữ liệu bạn nhé, tốc độ sẽ chậm đi rất nhiều. Vấn đề không nằm ở Docker, mà ở cơ chế mà Docker dùng để sync file thôi. Bạn đọc thêm món này http://docker-sync.io/
m tưởng build image là nó đóng hết vào container rồi chứ ? sao lại phải sync nữa ~~
@langtudatinh117 Docker cho mac không sử dụng trực tiếp được hệ điều hành của mac bạn ạ, nó cần chạy trong máy ảo. Nhưng vs linux thì docker sử dụng được luôn trên nền hệ điều hành linux -> vs Linux thì performance của docker chạy sẽ ko bị kém hơn nhiều khi chạy application trực tiếp.
Tuy nhiên trong mô hình container của docker, container tạo ra các process độc lập bên trong container, chúng cạnh tranh cả về CPU, RAM, Disk, Network và các loại tài nguyên khác với hệ thống. Quá trình này rất phức tạp, sự thiếu hiệu quả có thể xảy ra ở phần core của docker và hệ điều hành. Theo mình tìm hiểu thì vấn đề lớn nhất của docker là về security, vấn đề phức tạp, mình hiểu cũng ko đc rõ ràng -> ko bàn ở đây.
Còn về performance thì bạn có thể yên tâm, sự chênh lệch là ko nhiều, có bài nghiêm cứu của IBM kiểm tra về performance của docker bạn có thể tìm hiểu ở đây: https://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf phần tóm tắt nội dung và so sánh ở đây: https://stackoverflow.com/questions/21889053/what-is-the-runtime-performance-cost-of-a-docker-container
Hiển nhiên là giảm performance rồi, cái gì cũng có giá của nó thôi. Dùng Docker sẽ đỡ đc khâu deploy/setup + config.
:v chắc làm hệ thông bự chà bá mới dùng quá, chứ setup cho ứng dụng nhỏ cứ shell script là ok rồi
Không hẳn, nhỏ cũng vậy, đặc biệt là NodeJS, rất dễ bị conflict nodejs version với dependencies này nọ. Thử tưởng tượng phải deploy lên 1 server có sẵn của client đang chạy 1 ứng dụng dùng NodeJS version củ hơn requirement của App mình sẽ biết...
Có 1 container khi deploy sẽ khỏe hơn nhiều.