所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.
有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?
我正在寻找一个命令行解决方案,它将返回localhost的主(第一)IP地址,而不是127.0.0.1
该解决方案至少适用于Linux(Debian和RedHat)和OS X 10.7+
我知道ifconfig两者都可用,但它们的输出在这些平台之间并不一致.
我有一个运行jenkins的码头集装箱.作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器.有没有办法将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器?
编辑:我在Linux机器上本地运行docker.
更新:
除了下面的@larsks答案,要从主机获取主机IP的IP地址,我还会执行以下操作:
ip addr show docker0 | grep -Po 'inet \K[\d.]+'
Run Code Online (Sandbox Code Playgroud) 我正在使用Ubuntu/vagrant作为我的开发环境.我在rails console上收到这些消息:
Started GET "/assets/home-fcec5b5a277ac7c20cc9f45a209a3bcd.js?body=1" for 10.0.2.2 at 2015-04-02 15:48:31 +0000
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Run Code Online (Sandbox Code Playgroud)
是否可以禁用那些"无法呈现..."消息或以任何方式允许它们?
如果我在某台主机上运行了一个mysql数据库,并且该主机也在运行一个docker容器:我如何从主机上运行的docker容器中访问mysql数据库?
例如,有没有办法将主机端口发布到容器(docker run -p的反转)?
我想尝试 Xdebug 3.0.0RC1 来探索发生了什么变化以及随之而来的新功能。我也在使用最新的 PhpStorm 2020.3 EAP,它支持 Xdebug 3,不需要主要配置。下面是我的调试器的 PhpStorm 配置:
这是我为 Xdebug3 尝试的配置:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal # here I tried several combinations like: "localhost", "127.0.0.1", "172.17.0.1"
xdebug.client_port=9001 # here I tried several ports 9003 included with no success
Run Code Online (Sandbox Code Playgroud)
我也试过根本不添加client_host/client_port设置,但仍然失败。
我收到此错误:
Script php bin/console doctrine:cache:clear-metadata returned with error code 255
!! [17-Nov-2020 15:24:40 UTC] Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port) :-(
!! [17-Nov-2020 15:24:41 UTC] PHP Fatal error: Method class@anonymous::__toString() …Run Code Online (Sandbox Code Playgroud) 我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的MySQL数据库:
[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306
Run Code Online (Sandbox Code Playgroud)
我能够通过端口转发和SSH连接到远程数据库,在我的本地机器(docker之外)上运行Django应用程序:
ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER
Run Code Online (Sandbox Code Playgroud)
我使用Centos 6.x为应用程序设置了Docker容器,但无法使MySQL连接正常工作.容器安装了MySQL并运行了mysqld.
我的docker-compose.yml文件如下所示:
version: "2"
services:
web:
build: .
image: MY_IMAGE
container_name: MY_CONTAINER
network_mode: "host"
ports:
- "3307:3306"
command: /bin/bash
Run Code Online (Sandbox Code Playgroud)
在容器运行的情况下,我可以执行以下命令(在容器外部)以在远程数据库上显示数据库:
docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307
Run Code Online (Sandbox Code Playgroud)
但是从容器内部,同样的命令失败:
echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306
ERROR 2003 (HY000): Can't connect to MySQL …Run Code Online (Sandbox Code Playgroud) 我是Docker的新手,并试图了解将docker parent host ip插入容器主机文件的最佳方法是什么.
我在Dockerfile中使用以下命令
RUN /sbin/ip route|awk '/default/ { print $3,"\tdockerhost" }' >> /etc/hosts
但有时候主机ip得到改变所以它不再相关......
如果你问自己,这样做的原因是我需要访问另外2个码头工人容器(并且链接不提供此功能).
谢谢,
我在 WSL2上的https://0.0.0.0:4000(也可以作为https://local.phx-cd.shoepping.at:4000访问,映射到 Ubuntu 主机文件中的 127.0.0.1)上运行一个简单的 Web 服务器乌班图。我可以从 Ubuntu 和 Windows 主机连接到它 - 到目前为止一切顺利。但此外,在我的 Docker for Win 与 WSL2 集成中,我运行了一个 selenium chrome 容器,该容器正在该 Web 服务器上连接和测试内容(使用网桥),但它无法连接到它!
我连接到容器并尝试卷曲到 Web 服务器 - 连接被拒绝。由于我的计算机上有双启动,我尝试切换到我的 Linux 发行版,在那里运行 Web 服务器并在 Linux Docker 中运行 selenium,并且与本地 Web 服务器的连接工作正常。所以我认为这与 WSL2 有关系。
我的 docker-compose.yaml(我省略了 selenium hub 配置)
selenium-chrome-local:
image: selenium/node-chrome-debug:3.141.59
restart: always
ports:
- 5901-5902:5900
volumes:
- /dev/shm:/dev/shm
- ../../temp:/home/seluser/Downloads
depends_on:
- selenium-hub-local
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1080
extra_hosts:
- "local.phx-cd.shoepping.at:10.99.99.1"
networks:
- selgrid
- dockerhost
networks: …Run Code Online (Sandbox Code Playgroud) 有没有我们可以运行的命令并找到"Docker Host URI"?我找到了一些相关的问题,但没有得到它.