ดังนั้นฉันจึงมี 3 พอร์ตที่ควรเปิดเผยกับอินเทอร์เฟซของเครื่อง เป็นไปได้หรือไม่ที่จะทำเช่นนี้กับคอนเทนเนอร์ Docker
ดังนั้นฉันจึงมี 3 พอร์ตที่ควรเปิดเผยกับอินเทอร์เฟซของเครื่อง เป็นไปได้หรือไม่ที่จะทำเช่นนี้กับคอนเทนเนอร์ Docker
คำตอบ:
หากต้องการเปิดเผยเพียงหนึ่งพอร์ตนี่คือสิ่งที่คุณต้องทำ:
docker run -p <host_port>:<container_port>
หากต้องการเปิดเผยหลายพอร์ตเพียงระบุ-p
อาร์กิวเมนต์หลายตัว:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
Note: The -p flag can be used multiple times to configure multiple ports.
--env-file
?
publish
expose
ในของDockerfile
คุณคุณสามารถใช้กริยาEXPOSE
เพื่อแสดงหลายพอร์ต
เช่น
EXPOSE 3000 80 443 22
Dockerfile
แล้วคุณต้องการที่จะสร้างภาพใหม่บนพื้นฐานดังกล่าวข้างต้น
เช่น
docker build -t foo:tag .
จากนั้นคุณสามารถใช้-p
เพื่อทำแผนที่พอร์ตของโฮสต์ที่มีพอร์ตภาชนะที่กำหนดไว้ในข้างต้นของEXPOSE
เช่นDockerfile
docker run -p 3001:3000 -p 23:22
ในกรณีที่คุณต้องการแสดงพอร์ตต่อเนื่องหลายช่วงคุณสามารถเรียกใช้ตัวเทียบท่าดังนี้:
docker run -it -p 7100-7120:7100-7120/tcp
ถ้าคุณใช้docker-compose.yml
ไฟล์:
services:
varnish:
ports:
- 80
- 6081
คุณยังสามารถระบุโฮสต์ / เครือข่ายพอร์ต
varnish:
ports:
- 80:80
- 6081:6081
หากคุณกำลังสร้างคอนเทนเนอร์จากอิมเมจและต้องการแสดงหลายพอร์ต (ไม่เผยแพร่) คุณสามารถใช้คำสั่งต่อไปนี้:
นักสร้างสร้าง - ชื่อ -
container name
รวบรวม 7000 - รวบรวม 7001image name
ตอนนี้เมื่อคุณเริ่มคอนเทนเนอร์นี้โดยใช้docker start
คำสั่งพอร์ตที่กำหนดไว้ด้านบนจะถูกเปิดเผย