Docker因配置错误无法启动容器时该咋整
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker因配置错误无法启动容器时该咋整相关的知识,希望对你有一定的参考价值。
参考技术A 【总结】Docker无法启动容器时如何修改配置在docker中因为配置错误,导致容器一直无法启动,使用 docker logs -f containerId 发现报错但是只能隔岸观火噶咋整。
nginx因为配置问题导致无法启动, docker ps 查看不到进程号
我们使用docker logs查看一下日志
由此我们可以看到是因为/etc/nginx/nginx.conf这个文件的11行有问题导致的。
我的这个问题是属于第二类,所以依次执行以下步骤:
① 将/etc/nginx/nginx.conf配置文件cp到主机
② 修改配置文件
③ 将配置文件写回容器
④ 启动容器
⑤ 查看进程号
Nomad 连接两个 docker 容器
【中文标题】Nomad 连接两个 docker 容器【英文标题】:Nomad Connect Two docker Containers 【发布时间】:2021-11-24 05:24:29 【问题描述】:我无法通过 nomad 在两个 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"]
【问题讨论】:
这能回答你的问题吗? how can I connect two docker containers with nomad 【参考方案1】:所以我基本上能够解决它,当您在开发模式下启动 nomad 代理时,默认情况下它绑定到环回接口,这就是为什么您在 NOMAD 环境变量中获得 127.0.0.1 作为 IP 和节点端口的原因。 127.0.0.1 解析为容器内的 localhost,因此无法访问 Redis 服务器。
要解决这个问题,只需运行
ip a
确定我的主要网络接口,它是我的 wifi 接口。然后像下面这样启动游牧民族。
nomad agent -dev -network-interface="en0"
# where en0 is the primary network interface
这样你仍然可以访问 localhost:4646 上的游牧 UI,但你的容器将从你的网络获取 HOST IP,而不是 127.0.0.1
【讨论】:
理想情况下,您应该安装 Consul,然后使用服务名称发现在整个集群中的容器之间进行通信,而不是仅在一台主机上进行通信以上是关于Docker因配置错误无法启动容器时该咋整的主要内容,如果未能解决你的问题,请参考以下文章
当我在 iPad 上收到“无法验证应用程序”错误时该怎么办?