Tôi có Dockerfile sau cho container của tôi:Docker Soạn không ràng buộc cổng
FROM centos:centos7
# Install software
RUN yum -y update && yum clean all
RUN yum install -y tar gzip wget && yum clean all
# Install io.js
RUN mkdir /root/iojs
RUN wget https://iojs.org/dist/v1.1.0/iojs-v1.1.0-linux-x64.tar.gz
RUN tar -zxvf iojs-v1.1.0-linux-x64.tar.gz -C /root/iojs
RUN rm -f iojs-v1.1.0-linux-x64.tar.gz
# add io.js to path
RUN echo "PATH=$PATH:/root/iojs/iojs-v1.1.0-linux-x64/bin" >> /root/.bashrc
# go to /src
WORKDIR /src
CMD /bin/bash
tôi xây dựng chứa này và bắt đầu hình ảnh với docker run -i -t -p 8080:8080 -v /srv/source:/usr/src/app -w /usr/src/app --rm iojs-dev bash
. Docker gắn cổng 8080 với cổng máy chủ 8080, để tôi có thể truy cập ứng dụng iojs từ máy khách của tôi. Mọi thứ đều hoạt động tốt.
Bây giờ tôi muốn bắt đầu container của tôi với Docker-soạn, sử dụng Docker-compose.yml sau
webfrontend:
image: iojs-dev
links:
- db
command: bash -c "iojs test.js"
ports:
- "127.0.0.1:8080:8080"
volumes:
- /srv/source:/usr/src/app
- /logs:/logs
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: 12345
Khi tôi bây giờ chạy docker-compose run webfrontend bash
tôi không thể truy cập vào cổng 8080 trên máy chủ của tôi. Không có cổng nào bị ràng buộc. Kết quả của docker ports
trống và cũng là kết quả của docker inspect
là trống ở các thiết lập cổng:
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"IPAddress": "172.17.0.51",
"IPPrefixLen": 16,
"MacAddress": "02:42:ac:11:00:33",
"PortMapping": null,
"Ports": {
"8080/tcp": null
}
},
"HostConfig": {
"Binds": [
"/srv/source:/usr/src/app:rw",
"/logs:/logs:rw"
],
"CapAdd": null,
"CapDrop": null,
"ContainerIDFile": "",
"Devices": null,
"Dns": null,
"DnsSearch": null,
"ExtraHosts": null,
"Links": [
"/docker_db_1:/docker_webfrontend_run_34/db",
"/docker_db_1:/docker_webfrontend_run_34/db_1",
"/docker_db_1:/docker_webfrontend_run_34/docker_db_1"
],
"LxcConf": null,
"NetworkMode": "bridge",
"PortBindings": null,
"Privileged": false,
"PublishAllPorts": false,
"RestartPolicy": {
"MaximumRetryCount": 0,
"Name": ""
},
"SecurityOpt": null,
"VolumesFrom": []
},
[Bản phát hành RC mới nhất 1.1.0-rc2] (https://github.com/docker/fig/releases) (bây giờ được gọi là docker-compose) hỗ trợ cờ '--service-ports', sẽ liên kết các cổng trong 'fig run'. – dnephin
@dnephin Cảm ơn, tôi chuẩn bị từ bỏ kịch bản lệnh 'run' tùy chỉnh của mình. Đã thêm vào câu trả lời. –