ตกลงนี่คือการขับรถฉันบ้าถั่ว ฉันพยายามเรียกใช้เซิร์ฟเวอร์ Nginx ผ่าน Docker แต่ไม่สามารถเปิดพอร์ต 80 ได้อย่างถูกต้อง
ในขณะที่ฉันใช้ boot2docker ในฐานะผู้ใช้ทั่วไปฉันไม่สามารถผูกพอร์ตที่ต่ำกว่า 1024 ได้ดังนั้นฉันจึงเพิ่มพอร์ตฟอร์เวิร์ดดิ้งสำหรับ 8080 เป็น:
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8080,tcp,,8080,,80"
จากนั้นฉันเริ่ม boot2docker:
boot2docker start
และรันคำสั่งส่งออกที่บอกให้ฉัน:
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/verhage/.boot2docker/certs/boot2docker-vm
ฉันดึงภาพ nginx แล้ว:
docker pull dockerfile/nginx
จากนั้นฉันก็เปิดภาชนะ nginx ของฉัน
docker run -d -p 8080:80 --name nginx dockerfile/nginx
ทุกอย่างโอเคนุ่มดังนั้นฉันเปิดเบราว์เซอร์และไปที่ http://localhost:8080
แต่ไม่มีอะไรเกิดขึ้น ("รหัสข้อผิดพลาด: ERR_EMPTY_RESPONSE" ใน Chrome)
เมื่อฉันตรวจสอบกับ telnet จะทำการเชื่อมต่อ แต่เซิร์ฟเวอร์สิ้นสุดลงทันที:
telnet localhost 8080
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
ฉันรู้ว่ามันต้องทำอะไรกับ OS X / Boot2docker ฉันลองตั้งค่าคอนเทนเนอร์จากอิมเมจเดียวกันบน CentOS สำเร็จทันที
ใครที่รู้ว่าเกิดอะไรขึ้นที่นี่
มีคุณ ดูที่นี้ ?
—
JakeGould
ไม่ฉันยังไม่ได้ แต่ฉันเพิ่งแก้ไขปัญหา สิ่งที่ฉันทำโดยเริ่มต้นการแมปคอนเทนเนอร์ของฉันที่ 8080 ถึง 80 และการเพิ่มการส่งต่อพอร์ตไปยัง boot2docker สำหรับ 8080 ถึง 80 กำลังสร้างโซ่ 8080- & gt; 80 | 8080- & gt; 80 ซึ่งใช้ไม่ได้ ตอนนี้ฉันเริ่มคอนเทนเนอร์ด้วย -P 80:80 และส่งต่อพอร์ตจาก 8080 ถึง 80 โซ่นั้นใช้ได้: 8080- & gt; 80- & gt; 80- & gt; 80
—
verhage
ดีใจที่ได้ยินว่าคุณแก้ไขมัน! อาจดีที่สุดถ้าคุณโพสต์ความคิดเห็นนั้นเป็นคำตอบที่แท้จริงซึ่งอ้างอิงจากคำสั่งที่โพสต์ในคำถามของคุณสำหรับการเปรียบเทียบ / ความเปรียบต่าง
—
JakeGould