Nomad 连接两个 docker 个容器
Nomad Connect Two docker Containers
我无法通过游牧者在两个 docker 容器之间建立通信。容器在同一个任务组中,但仍然无法相互访问。即使使用 NOMAD_ADDR_ 环境变量。任何人都可以在这方面提供帮助吗?我尝试了主机和桥接网络模式。
我的游牧配置如下。图像被拉取,Redis 容器和应用程序容器启动,但随后应用程序容器崩溃并出现 Redis Connection Refused 错误
第二个问题,正如您可能已经猜到的那样,是通过适当的缩进等来美化代码。就像 Javascript 或 HTML 或 YAML 在 VS 代码中自动格式化一样。我找不到 HCL 语言的代码美化器。
job "app-deployment" {
datacenters = ["dc1"]
group "app" {
network {
mode = "bridge"
port "web-ui" { to = 5000 }
port "redis" { to = 6379 }
}
service {
name = "web-ui"
port = "web-ui"
// check {
// type = "http"
// path = "/health"
// interval = "2s"
// timeout = "2s"
// }
}
task "myapp" {
driver = "docker"
config {
image_pull_timeout = "10m"
image = "https://docker.com"
ports = ["web-ui"]
}
env {
REDIS_URL="redis://${NOMAD_ADDR_redis}"
// REDIS_URL="redis://$NOMAD_IP_redis:$NOMAD_PORT_redis"
NODE_ENV="production"
}
}
task "redis" {
driver = "docker"
config {
image = "redis"
ports = ["redis"]
}
}
}
}
所以我能够解决它,基本上,当您在开发模式下启动游牧代理时,默认情况下它绑定到环回接口,这就是为什么您在 NOMAD 环境变量中获得 127.0.0.1 作为 IP 和节点端口的原因. 127.0.0.1 解析为容器内的本地主机,因此无法访问 Redis 服务器。
要解决此问题,只需 运行
ip a
确定我的主要网络接口,这是我的 wifi 接口。然后像下面这样启动游牧。
nomad agent -dev -network-interface="en0"
# where en0 is the primary network interface
这样你仍然可以在 localhost:4646 上访问游牧者 UI 但你的容器将从你的网络获取主机 IP 而不是 127.0.0.1
我无法通过游牧者在两个 docker 容器之间建立通信。容器在同一个任务组中,但仍然无法相互访问。即使使用 NOMAD_ADDR_ 环境变量。任何人都可以在这方面提供帮助吗?我尝试了主机和桥接网络模式。
我的游牧配置如下。图像被拉取,Redis 容器和应用程序容器启动,但随后应用程序容器崩溃并出现 Redis Connection Refused 错误
第二个问题,正如您可能已经猜到的那样,是通过适当的缩进等来美化代码。就像 Javascript 或 HTML 或 YAML 在 VS 代码中自动格式化一样。我找不到 HCL 语言的代码美化器。
job "app-deployment" {
datacenters = ["dc1"]
group "app" {
network {
mode = "bridge"
port "web-ui" { to = 5000 }
port "redis" { to = 6379 }
}
service {
name = "web-ui"
port = "web-ui"
// check {
// type = "http"
// path = "/health"
// interval = "2s"
// timeout = "2s"
// }
}
task "myapp" {
driver = "docker"
config {
image_pull_timeout = "10m"
image = "https://docker.com"
ports = ["web-ui"]
}
env {
REDIS_URL="redis://${NOMAD_ADDR_redis}"
// REDIS_URL="redis://$NOMAD_IP_redis:$NOMAD_PORT_redis"
NODE_ENV="production"
}
}
task "redis" {
driver = "docker"
config {
image = "redis"
ports = ["redis"]
}
}
}
}
所以我能够解决它,基本上,当您在开发模式下启动游牧代理时,默认情况下它绑定到环回接口,这就是为什么您在 NOMAD 环境变量中获得 127.0.0.1 作为 IP 和节点端口的原因. 127.0.0.1 解析为容器内的本地主机,因此无法访问 Redis 服务器。
要解决此问题,只需 运行
ip a
确定我的主要网络接口,这是我的 wifi 接口。然后像下面这样启动游牧。
nomad agent -dev -network-interface="en0"
# where en0 is the primary network interface
这样你仍然可以在 localhost:4646 上访问游牧者 UI 但你的容器将从你的网络获取主机 IP 而不是 127.0.0.1