Khác nhau giữa Docker expose và Docker publish

Đọc hướng dẫn trên mạng thì mình thấy có thể sử dụng Docker EXPOSE trong Dockerfile để expose cổng 80 của Apache như sau:

EXPOSE 80

Và khi chạy Docker thì sử dụng câu lệnh sau để publish cổng 80 (theo mình hiểu cũng tương tự như expose):

$ docker run -d -p 80 test_image

Như vậy thì Docker expose và Docker publish khác nhau như thế nào?

1 Câu Trả Lời

Linh Nguyễn Linh Nguyễn

Docker EXPOSE dùng để mở cổng 80 trong Docker container hiện tại cho các container khác của Docker có thể truy cập.

Ví dụ bạn có hai container là ruby_on_rails_appapi_app trong đó một ứng dụng trong ruby_on_rails_app cần mở cổng 80 để một ứng dụng khác trong api_app có thể truy cập vào. Khi đó bạn sử dụng Docker EXPOSE.

Trong tập tin Dockerfile:

EXPOSE 80

Và khi chạy Docker để khởi động ruby_on_rails_app container bạn có thể bỏ qua tùy chọn p như sau:

$ docker run -d ruby_on_rails_app

Và khởi động api_app container:

$ docker run -d api_app

Docker PUBLISH dùng để mở cổng 80 trong Docker container hiện tại cho các container khác đồng thời cho các yêu cầu gửi đến từ Docker host (không phải là container).

Ví dụ bạn có hai container là ruby_on_rails_appapi_app trong đó một ứng dụng web trong ruby_on_rails_app cần mở cổng 80 để một ứng dụng khác trong api_app và tất cả các ứng dụng khác từ host có thể truy cập khi đó bạn sử dụng Docker PUBLISH.

Trong tập tin Dockerfile:

EXPOSE 80

Khởi động ruby_on_rails_app container và publish cổng 80:

$ docker run -d -p 80 ruby_on_rails_app

Và khởi động api_app container:

$ docker run -d api_app
Nội dung tối thiểu 100 ký tự

Câu Hỏi Liên Quan