是否有一个命令可以在创建新容器后运行以从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我想推出自己的代码部署和容器配置脚本.
我在CentOS docker主机上有一个CentOS docker容器.当我使用此命令运行docker镜像时docker run -d --net=host -p 8777:8777 ceilometer:1.x,docker容器获取主机的IP,但没有为其分配端口.
如果我在没有"--net = host"的情况下运行相同的命令,则docker会docker run -d -p 8777:8777 ceilometer:1.x公开端口但使用不同的IP.docker版本是1.10.1.我希望docker容器与暴露端口的主机具有相同的IP.我也在Dockerfile指令中提到EXPOSE 8777但在docker run命令中提到"--net = host"时没有用.
我正在尝试使用dockerized版本的nginx作为我的节点(ExpressJS)应用程序的代理服务器.没有任何配置到nginx和发布容器的端口80,我能够看到默认的nginx登陆页面.所以我知道这很有用.
现在我可以挂载包含配置的启用站点的目录proxy_pass localhost:3000.我的节点应用程序在本地运行(不在任何Docker容器中),我可以通过端口3000(即localhost:3000)访问它.但是,我假设在nginx容器运行,映射到端口80,并代理我的localhost:3000,我将能够看到我非常简单的(hello world)应用程序.相反,我收到502.
我需要把东西传递给码头工人吗?这可能是nginx配置错误吗?这是我的nginx配置:
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
proxy_pass http://localhost:3000;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用这个问题,但似乎没有帮助.这是除非我做错了.
我正在开发要在Docker中运行的ASP.NET Core应用程序。在开发过程中,我希望容器连接到在我的开发机器(也是我的docker主机)上运行的SQLEXPRESS。但是,据我所知,容器根本无法到达主机。我无法连接到SQL或从容器ping主机IP。我可以在主机上本地运行该应用程序,并可以很好地连接到SQL Server,因此我怀疑是否可以在可以从容器ping主机的位置获得它,也可以连接到SQL。
主机在主适配器上的IP为10.0.0.5,在“ HNS Internal NIC”上的IP为172.30.96.1,我认为这是Docker使用的主机。
为了测试基本连通性,我尝试从容器内部ping:
docker exec -i containername cmd
c:\app ping 10.0.0.5
Request timed out
c:\app ping 172.30.96.1
Request timed out
Run Code Online (Sandbox Code Playgroud)
基于一些类似的帖子,我也尝试连接到“主机”网络,但是,此版本的docker显然不可用。我怀疑这对于Linux来说更多:
docker run --net="host" ...
network host not found.
Run Code Online (Sandbox Code Playgroud)
我还发现了类似的Windows 10帖子,其中建议使用“透明”网络。有了这个网络,我无法连接或断开连接:
docker network create --driver transparent trans --gateway 10.0.0.1 --subnet 10.0.0.1/16
docker run --net=trans ...
docker exec -i containername cmd
c:\app> ipconfig
IPv4 address: 10.0.205.104
c:\app> ping 10.0.0.5
Request timed out
c:\app> exit
ping 10.0.205.104
Request timed out
Run Code Online (Sandbox Code Playgroud)
这是我的码头工人信息:
Containers: 1
Running: 1
Paused: 0 …Run Code Online (Sandbox Code Playgroud) 我有一个在后端使用MySQL数据库的war文件。我已将 war 文件部署在 docker 容器中,并且可以从浏览器中 ping 通该文件。我想将我的应用程序与 MySQL 数据库连接。该数据库存在于我的主机上localhost:3306
由于我无法从容器的本地主机内部连接它,所以我尝试运行一个命令docker inspect --format '{{ .NetworkSettings.IPAddress }}' 213be777a837
该命令给了我一个 IP 地址172.17.0.2。我进入 MySQL 服务器选项并将此 IP 地址放入绑定字段并重新启动服务器。之后,我更新了我的项目数据库连接字符串172.17.0.2:3306
但它不起作用。谁能告诉我我缺少什么吗?我还尝试使用 root@% 添加新的数据库用户,然后运行命令允许对“root@%”的所有权限,但没有任何效果。