gpt4 book ai didi

linux - 在 _interactive_ docker 启动之前,docker 容器似乎有失败的/etc/hosts

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:59 25 4
gpt4 key购买 nike

如果我在交互式终端中“docker-compose start service”(不是 -it,而是在主机上交互式运行的 bash),我的服务会愉快地初始化。

但如果我将相同的命令放入 shell 脚本中,它就会失败。

我怀疑问题是通过/etc/hosts 进行名称解析;它似乎可以交互工作,但由于某种原因不能在脚本中工作。我希望容器能够看到主机的/etc/hosts 中定义的名称。尽管我使用的是 Linux Mint 19.1,但我需要它才能在 Windows、Mac 和 Linux 上工作。

我试过但没有用的东西:

  1. 增加 sleep - 长达 10 分钟
  2. 检查环境变量差异
  3. 在 tcsh 而不是 bash 下运行命令
  4. 使用/usr/bin/script -c 在伪 tty 中运行命令

但是,如果我在我的脚本中抛出一个/bin/bash -i,并附上一个说明要键入什么命令的 echo ,它就会起作用!

我正在使用:

docker version 18.09.6, build 481bc77
docker-compose version 1.24.0, build 0aa59064

我必须得到我的管理部门的同意才能分享更多的代码片段。

为了自动化,我希望服务通过 docker-compose up -d 或至少 docker-compose start - 在脚本中启动。

容器内的错误消息(来自 docker logs -f service)如下所示:elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host=u'elasticsearch', port=9200): 读取超时。(读取超时=10))

我有时会看到 elasticsearch 的负载很高,这似乎有点奇怪。我所说的高是指在 8 核上高达 490%(可能算上超线程)。更常见的是它下降了 5-15% 左右。

这是一个 SSCCE:

#!/bin/bash

set -eu
set -o pipefail
set -x

docker stop elasticsearch || true
docker-compose start elasticsearch

# Give elasticsearch some time to come up.
# Normally I use a small REST client that calls ES until it starts responding - but that wouldn't be self-contained.
sleep 120

docker stop service || true
docker-compose start service

脚本本身运行正常,但随后“服务”提前退出。

谢谢!

最佳答案

如果我理解正确,您希望 elasticsearch 容器为您的 service 容器提供服务(即两个容器相互联系)因此,service 容器需要知道 elasticsearch 的 IP 地址。

在这种情况下,docker-compose 将管理容器地址,您需要做的是将该信息作为环境变量存储在服务容器中。它的优点是,您可以使用相同的命令(只需 docker-compose up -d)启动两个容器。例如:

services:
elasticsearch:
image: YOUR_ELASTICSEARCH_IMAGE
ports:
- 9200:9200
service:
image: YOUR_SERVICE_IMAGE
environment:
- ELASTICSEARCH_HOST=elasticsearch

如果容器之间存在依赖关系并且 elasticsearch 容器需要一些时间来启动,那么您可以在启动时在 service 中放置一个 sleep 语句,或者使用31746182 中的解决方案

关于linux - 在 _interactive_ docker 启动之前,docker 容器似乎有失败的/etc/hosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com