文档在这里确实缺乏详细说明。
ports:
- "20000-20100"
该方法适用于单个端口(但是“20000”并不奏效,似乎会绑定到某个在40k以上的随机端口),但我找不到一种可靠的方法来转发一个端口范围而不仅仅是一个。
- "20000-20100"
- "10000-10100:20000-20100"
- "20000-20100:20000-20100"
这些都不起作用。
我在Dockerfile中也暴露了20000-30000,但我认为这实际上并不重要。我是在错怪自己吗?这似乎是一个很容易的问题,但我已经花费数小时时间无法使连接正常工作。
编辑:
使用“20000-20010”公开这些端口:
0.0.0.0:43809->20000/tcp,0.0.0.0:43808->20001/tcp,0.0.0.0:43807->20002/tcp,0.0.0.0:43806->20003/tcp,0.0.0.0:43805->20004/tcp,0.0.0.0:43804->20005/tcp,0.0.0.0:43803->20006/tcp,0.0.0.0:43802->20007/tcp,0.0.0.0:43801->20008/tcp,0.0.0.0:43800->20009/tcp,0.0.0.0:43799->20010/tcp
使用“20000-20010:20000-20010”公开这些端口:
0.0.0.0:20000-20010->20000-20010/tcp
看起来是正确的,但我无法实际与它们建立任何连接。
编辑2:Docker-compose
version: '3.2'
services:
sshd:
build: .
ports:
- "23:22"
- "20000-20010:20000-20010"
environment:
REDIS_ADDRESS: redis
DEBUG: 'sshd:*,ioredis:*'
web:
image: controller_web
ports:
- target: 3000
published: 3000
protocol: tcp
mode: host
environment:
REDIS_ADDRESS: redis
DEBUG: 'sshd:*,ioredis:*'
redis:
image: "redis"
Dockerfile
FROM node:alpine
# add openssh and clean
RUN apk add --update openssh \
&& rm -rf /tmp/* /var/cache/apk/*
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
COPY package.json /usr/src/app/
RUN apk add --no-cache --virtual .gyp \
python \
make \
g++
RUN npm install && npm cache clean --force
COPY . /usr/src/app
#make sure we get fresh keys
RUN rm -rf /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_dsa_key
EXPOSE 22
EXPOSE 20000-30000
ENTRYPOINT ["sh", "entrypoint.sh"]
CMD ["npm", "start"]