Làm cách nào tôi có thể hiển thị nhiều hơn 1 cổng với Docker?


Câu trả lời:


715

Để chỉ hiển thị một cổng, đây là những gì bạn cần làm:

docker run -p <host_port>:<container_port>

Để hiển thị nhiều cổng, chỉ cần cung cấp nhiều -pđối số:

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

4
Cảm ơn! Tìm thấy điều này trong các tài liệu ở đây: docs.docker.com/userguide/dockerlinks/ , nơi nó nóiNote: The -p flag can be used multiple times to configure multiple ports.
Ted M. Young

Có cách nào để chỉ định các cổng trong tệp cấu hình không? Ví dụ sử dụng tùy chọn --env-file?
Giovanni Bitliner

8
@GiovanniBitliner Tôi vẫn còn khá mới với điều này, nhưng tôi khá chắc chắn rằng bạn sẽ xác định các cổng trong Dockerfile bằng EXPOSE , sau đó thực hiện docker run -P(lưu ý chữ hoa) tự động hiển thị tất cả các cổng được xác định bằng EXPOSE trong Dockerfile
Ted Avery

Nhiều cổng có thể tạm dừng quá trình init trong tệp dịch vụ systemd?
Lanti

1
Tôi nghĩ thuật ngữ chính xác ở đây là publishkhông expose.
tgogos

289

Bước 1

Trong của bạn Dockerfile, bạn có thể sử dụng động từ EXPOSEđể lộ nhiều cổng.
ví dụ

EXPOSE 3000 80 443 22

Bước 2

Sau đó, bạn muốn xây dựng một hình ảnh mới dựa trên Dockerfile.
ví dụ

docker build -t foo:tag .

Bước 3

Sau đó, bạn có thể sử dụng -pđể ánh xạ cổng máy chủ với các cảng container, theo quy định tại nêu trên EXPOSEcủa Dockerfile.
ví dụ

docker run -p 3001:3000 -p 23:22

Trong trường hợp bạn muốn hiển thị một loạt các cổng liên tục, bạn có thể chạy docker như thế này:

docker run -it -p 7100-7120:7100-7120/tcp 

17
EXPOSE chỉ là tài liệu cho các cổng được xuất bản và chỉ hữu ích cho liên kết. Một danh sách đầy đủ các cổng có thể được tìm thấy bằng cách sử dụng -P và chúng sẽ được tự động ánh xạ tới một cổng có sẵn trên máy chủ.
Arun Gupta

4
Tiếp xúc là không cần thiết. Hủy bỏ bước đầu tiên hoặc làm cho nó tùy chọn.
AmirHossein

27

nếu bạn sử dụng docker-compose.ymltập tin:

services:
    varnish:
        ports:
            - 80
            - 6081

Bạn cũng có thể chỉ định cổng máy chủ / mạng

varnish:
    ports:
        - 80:80
        - 6081:6081

0

Nếu bạn đang tạo một thùng chứa từ một hình ảnh và muốn để lộ nhiều cổng (không xuất bản), bạn có thể sử dụng lệnh sau:

tạo container namedocker --name --expose 7000 --expose 7001image name

Bây giờ, khi bạn khởi động container này bằng docker startlệnh, các cổng được cấu hình ở trên sẽ bị lộ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.