我需要在需要 L2TP/IPsec VPN
的 docker
容器上调用一个资源。 VPN 设置正常(我在直接从笔记本电脑调用它时收到 200 状态代码响应)。但后来我从 docker 容器连接卡在 ssl handshake.
我应该如何设置 docker 以便容器的行为与我的笔记本电脑中的行为相同?
Python 回溯:
Traceback (most recent call last):
File "/sp/server/env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 345, in _make_request
self._validate_conn(conn)
File "/sp/server/env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 844, in _validate_conn
conn.connect()
File "/sp/server/env/lib/python3.6/site-packages/requests/packages/urllib3/connection.py", line 326, in connect
ssl_context=context)
File "/sp/server/env/lib/python3.6/site-packages/requests/packages/urllib3/util/ssl_.py", line 324, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/local/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/local/lib/python3.6/ssl.py", line 817, in __init__
self.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 1077, in do_handshake
self._sslobj.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
socket.timeout: _ssl.c:835: The handshake operation timed out
dockerfiles/ServerDockerfile:
FROM python:3.6-jessie
RUN pip install virtualenv
ADD . /sp
WORKDIR /sp/server
# Register api port
EXPOSE 8090
CMD make run
docker-compose.yml :
version: '3'
services:
server:
restart: always
build:
context: .
dockerfile: dockerfiles/ServerDockerfile
volumes:
- .:/sp
ports:
- "8090:8090"
我试图从我计算机上的其他 docker
容器调用相同的资源,但情况始终相同 - 卡在 ssl
握手上。
我通过设置 docker-compose.yml
解决了我的问题 network_mode host
的参数值。
docker-compose.yml:
version: '3'
services:
server:
restart: always
build:
context: .
dockerfile: dockerfiles/ServerDockerfile
volumes:
- .:/sp # mount repo dir to container for development
ports:
- "8090:8090"
network_mode: "host"
我是一名优秀的程序员,十分优秀!