macos - 如何访问 Docker 容器和主机中的服务器?
问题描述
我使用 Docker3.3.1 并在 MacOS Catalina 10.15.7 上运行以下 python 容器
docker run --add-host host.docker.internal:host-gateway --name pythonserver --restart=always -p 5011:5000 \
-v /Users/python-server:/opt1 \
-v /Users/python-server/flask_config.py:/opt1/flask_config.py \
-v /Users/python-server/start.sh:/opt1/start.sh \
--dns 114.114.114.114 --dns 8.8.8.8 \
-e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime \
-d python-server
而在flask_config.py中,我用andhost.docker.internal
代替,比如“mysql+pymysql://root:123456@host.docker.internal:3306”localhost
127.0.0.1
Docker容器可以成功运行,我可以看到和其他服务器一样的日志,但是我无法访问python容器和主机中的服务器,
当我lsof -Pni | grep 5011
在主机上输入时,输出:
com.docke 546 elsa 92u IPv6 0x26f267ef****** 0t0 TCP *:5011 (LISTEN)
当我打字curl host.docker.internal:5011
时,我得到了curl: (52) Empty reply from server
我的 Dockerfile1 图像pythonserver-pack
如下:
FROM pymor/python_3.7
RUN mkdir /opt1
COPY ./requirements.txt /opt1
WORKDIR /opt1
RUN pip install --no-cache-dir -r requirements.txt
RUN apt-get update && apt-get install -y curl
和图像的 Dockerfile2pythonserver
如下:
FROM pythonserver-pack
ADD /pythonserver /opt1
WORKDIR /opt1
RUN chmod +x start.sh
CMD ["sh","start.sh"]
当我docker exec -it pythonserver bash
打字时lsof -Pni | grep 5000
,我什么也没得到,我被困了好几天,谢谢你的建议。
解决方案
推荐阅读
- multithreading - boost::python 线程通过 python 暂停和恢复 c++ 函数
- python - 有什么方法可以将 seaborn 中的颜色条(cbar)更改为图例(对于二进制热图)?
- protractor - Protractor browser.wait 打破了测试
- ibm-watson - 在生产中部署 IBM WKS 实验性基于规则的模型:这样做是否可取?
- reactjs - 如何在反应组件库中加载可替换文件?
- react-native - 包含图像比例的全宽图像在 React-Native 中不会被拉伸
- r - 用dplyr选择一个组,只用于操作,不保存选择
- java - 在循环中使用数组名称作为变量(Java)
- java - 过滤Recyclerview后获取位置
- reactjs - 使用 React 16 的 Chrome 开发工具的性能选项卡中的用户计时部分没有计时故障