Docker 码头工人集装箱倒塌
我有3个容器,它们通过RabbitMQ发送作业,相互通信和交换数据。 从昨天开始,工作流中要执行的最后一个容器(Docker 码头工人集装箱倒塌,docker,Docker,我有3个容器,它们通过RabbitMQ发送作业,相互通信和交换数据。 从昨天开始,工作流中要执行的最后一个容器(encoder\u aggregatore)在构建完成后立即退出: $docker-compose up -d --build [..] $docker ps -a 0f521c4260a5 encoder_my-pre-encoder "python main.py" About an hour ago Up 20 minutes
encoder\u aggregatore
)在构建完成后立即退出:
$docker-compose up -d --build
[..]
$docker ps -a
0f521c4260a5 encoder_my-pre-encoder "python main.py" About an hour ago Up 20 minutes encoder_my-pre-encoder_1
72c3f5a2aa9c encoder_aggregatore "python /src/main.py" 18 hours ago Exited (1) 20 minutes ago encoder_aggregatore_1
dd9104e888ee encoder_classificatore "python /src/main.py" 20 hours ago Up 20 minutes 0.0.0.0:8080->5000/tcp encoder_classificatore_1
9
更多信息:
$docker inspect 72c3f5a2aa9c
输出为
我完全是个新手。我不知道这是否有帮助,但我注意到,如果我编辑“损坏”容器的代码,新代码将被编译,但会在容器encoder\u my-pre-encoder
发送的“旧”数据作业上执行。我猜,由于某种原因,他们的交流中断了。
你能给我一些提示吗
编辑1:
docker-compose.yml:
version: '2.1'
services:
files:
image: busybox
volumes:
- ./file/input:/file/input
- ./file/output:/file/output
grafana:
image: grafana/grafana:5.1.0
ports:
- 3000:3000
volumes:
- ./prometheus/grafana/:/etc/grafana/provisioning/
environment:
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
- GF_AUTH_BASIC_ENABLED=false
depends_on:
- prometheus
prometheus:
image: prom/prometheus
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- 9090:9090
aggregatore:
build: aggregatore/.
volumes:
- ./aggregatore:/src
volumes_from:
- files
ports:
- 8000:8000
command: ["python", "/src/main.py"]
depends_on:
rabbit:
condition: service_healthy
classificatore:
build: classificatore/.
volumes:
- ./classificatore:/src
volumes_from:
- files
ports:
- 8080:5000
command: ["python", "/src/main.py"]
depends_on:
rabbit:
condition: service_healthy
my-pre-encoder:
build: mpeg-pre-encoder/.
volumes:
- ./my-pre-encoder:/src
- ./gabac_encoder:/src/gabac_encoder
volumes_from:
- files
depends_on:
rabbit:
condition: service_healthy
rabbit:
image: rabbitmq
ports:
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "cluster_status"]
interval: 5s
timeout: 2s
retries: 20
aggregatore容器日志:
Traceback (most recent call last):
File "/src/main.py", line 94, in <module>
rabbit.wait_for_job(worker)
File "/src/util.py", line 75, in wait_for_job
self.channel.start_consuming()
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 1822, in start_consuming
self.connection.process_data_events(time_limit=None)
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 758, in process_data_events
self._dispatch_channel_events()
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 521, in _dispatch_channel_events
impl_channel._get_cookie()._dispatch_events()
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 1445, in _dispatch_events
evt.body)
File "/src/util.py", line 68, in callback
worker_function(eval(body))
File "<decorator-gen-1>", line 2, in worker
File "/usr/local/lib/python3.7/site-packages/prometheus_client/context_managers.py", line 66, in wrapped
return func(*args, **kwargs)
File "/src/main.py", line 62, in worker
updateMitb(out_file, au['mitb_ptr'], au['AU_start_position'], au['AU_end_position'], au['dscn_value_ptr'])
KeyError: 'mitb_ptr'
日志
聚合矿/
$python main.py
2019-10-03 14:06:19,988 Could not get addresses to use: [Errno -2] Name or service not known (rabbit)
2019-10-03 14:06:19,988 Could not connect, 0 attempts left
2019-10-03 14:06:19,989 Connection open failed - gaierror(-2, 'Name or service not known')
Traceback (most recent call last):
File "main.py", line 18, in <module>
rabbit = Rabbit()
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/singleton_decorator/decorator.py", line 14, in __call__
self._instance = self.__wrapped__(*args, **kwargs)
File "/home/martina/PycharmProjects/mpegg_original/encoder/aggregatore/util.py", line 61, in __init__
self.connection = pika.BlockingConnection(pika.ConnectionParameters(host=RABBIT_HOST))
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 377, in __init__
self._process_io_for_connection_setup()
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 417, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 469, in _flush_output
raise maybe_exception
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/pika/adapters/base_connection.py", line 176, in _adapter_connect
socket.IPPROTO_TCP)
File "/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site-packages/pika/adapters/base_connection.py", line 304, in _getaddrinfo
return socket.getaddrinfo(host, port, family, socktype, proto)
File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
$python main.py
2019-10-03 14:06:19988无法获取要使用的地址:[Errno-2]名称或服务未知(兔子)
2019-10-03 14:06:19988无法连接,还剩0次尝试
2019-10-03 14:06:19989连接打开失败-错误(-2,“名称或服务未知”)
回溯(最近一次呼叫最后一次):
文件“main.py”,第18行,在
兔子
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/singleton_decorator/decorator.py”,第14行,在调用中__
self.\u实例=self.\u包装的(*args,**kwargs)
文件“/home/martina/PycharmProjects/mpegg_-original/encoder/aggregatore/util.py”,第61行,在__
self.connection=pika.BlockingConnection(pika.ConnectionParameters(host=RABBIT\u host))
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/pika/adapters/blocking_connection.py”,第377行,在__
self.\u进程\u io\u用于连接\u设置()
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/pika/adapters/blocking_connection.py”,第417行,进程中的连接设置
self.\u打开\u错误\u结果。准备好了吗)
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/pika/adapters/blocking_connection.py”,第469行,在刷新输出中
提出可能的例外
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/pika/adapters/base_connection.py”,第176行,在适配器连接中
socket.IPPROTO_(TCP)
文件“/home/martina/PycharmProjects/mpegg_original/venv/lib/python3.6/site packages/pika/adapters/base_connection.py”,第304行,在_getaddrinfo中
return socket.getaddrinfo(主机、端口、系列、socktype、proto)
文件“/usr/lib/python3.6/socket.py”,第745行,在getaddrinfo中
对于_socket.getaddrinfo(主机、端口、系列、类型、协议、标志)中的res:
socket.gaierror:[Errno-2]名称或服务未知
猛击到容器中:
$docker exec -it encoder_aggregatore_1 bash
Error response from daemon: Container 72c3f5a2aa9caba040bc60d1608c193e250967cde1a2b68a74d47cf36be887ee is not running
$docker run -it encoder_aggregatore /bin/bash
root@d5d030d88f76:/src# python main.py
2019-10-03 13:30:30,864 Connection to 31.199.53.9:5672 failed: timeout
2019-10-03 13:30:30,864 Could not connect, 0 attempts left
2019-10-03 13:30:30,865 Connection open failed - 'Connection to 31.199.53.9:5672 failed: timeout'
Traceback (most recent call last):
File "main.py", line 18, in <module>
rabbit = Rabbit()
File "/usr/local/lib/python3.7/site-packages/singleton_decorator/decorator.py", line 14, in __call__
self._instance = self.__wrapped__(*args, **kwargs)
File "/src/util.py", line 61, in __init__
self.connection = pika.BlockingConnection(pika.ConnectionParameters(host=RABBIT_HOST))
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 377, in __init__
self._process_io_for_connection_setup()
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 417, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 471, in _flush_output
raise exceptions.ConnectionClosed(maybe_exception)
pika.exceptions.ConnectionClosed: Connection to 31.199.53.9:5672 failed: timeout
$docker exec-it编码器\u聚合器\u 1 bash
来自守护程序的错误响应:容器72C3F5A2AA9CABA040BC60D1608C193E250967CDE1A2B68A7447CF36BE887EE未运行
$docker运行-it编码器\u聚合器/bin/bash
root@d5d030d88f76:/src#python main.py
2019-10-03 13:30:30864连接到31.199.53.9:5672失败:超时
2019-10-03 13:30:30864无法连接,剩余0次尝试
2019-10-03 13:30:30865连接打开失败-“连接到31.199.53.9:5672失败:超时”
回溯(最近一次呼叫最后一次):
文件“main.py”,第18行,在
兔子
文件“/usr/local/lib/python3.7/site packages/singleton\u decorator/decorator.py”,第14行,in\u调用__
self.\u实例=self.\u包装的(*args,**kwargs)
文件“/src/util.py”,第61行,在__
self.connection=pika.BlockingConnection(pika.ConnectionParameters(host=RABBIT\u host))
文件“/usr/local/lib/python3.7/site packages/pika/adapters/blocking_connection.py”,第377行,在__
self.\u进程\u io\u用于连接\u设置()
文件“/usr/local/lib/python3.7/site packages/pika/adapters/blocking_connection.py”,第417行,用于连接设置的进程io
self.\u打开\u错误\u结果。准备好了吗)
文件“/usr/local/lib/python3.7/site packages/pika/adapters/blocking\u connection.py”,第471行,在\u flush\u输出中
引发异常。连接已关闭(可能是\u异常)
pika.exceptions.ConnectionClosed:连接到31.199.53.9:5672失败:超时
您需要添加compose文件,即失败容器的日志。尝试手动启动失败的容器并查看其行为。尝试将bash放入该容器并运行其运行的命令,手动并查看执行此操作时出现的问题。从创建持续崩溃的容器的映像创建容器:docker run-it encoder\u my-pre-encoder/bin/bash
,然后运行在该容器中运行的启动命令。希望这是有道理的。然后,您应该看到在容器启动时不断发生的错误。这应该可以帮助你解决这个问题。我的坏意思是docker run-it编码器\u aggregatore/bin/bash
,因为这是不断崩溃的容器的图像。这样做,它应该从同一个映像打开一个全新的容器,然后您应该能够调试该问题。希望这有帮助。我没有足够的上下文来回答这个问题。您需要添加compose文件,失败容器的日志。尝试手动启动失败的容器并查看其行为。尝试将bash放入该容器并运行其运行的命令,手动并查看执行此操作时出现的问题。从创建持续崩溃的容器的映像创建容器:docker run-it encoder\u my-pre-encoder/bin/bash
,然后运行在该容器中运行的启动命令。希望这是有道理的。然后,您应该看到在容器启动时不断发生的错误。这应该可以帮助你解决这个问题。我的坏意思是docker run-it编码器\u aggregatore/bin/bash
,因为这是不断崩溃的容器的图像。这样做,它应该从同一个映像打开一个全新的容器,然后您应该能够调试该问题。希望这有帮助。我没有足够的上下文来解释
$docker exec -it encoder_aggregatore_1 bash
Error response from daemon: Container 72c3f5a2aa9caba040bc60d1608c193e250967cde1a2b68a74d47cf36be887ee is not running
$docker run -it encoder_aggregatore /bin/bash
root@d5d030d88f76:/src# python main.py
2019-10-03 13:30:30,864 Connection to 31.199.53.9:5672 failed: timeout
2019-10-03 13:30:30,864 Could not connect, 0 attempts left
2019-10-03 13:30:30,865 Connection open failed - 'Connection to 31.199.53.9:5672 failed: timeout'
Traceback (most recent call last):
File "main.py", line 18, in <module>
rabbit = Rabbit()
File "/usr/local/lib/python3.7/site-packages/singleton_decorator/decorator.py", line 14, in __call__
self._instance = self.__wrapped__(*args, **kwargs)
File "/src/util.py", line 61, in __init__
self.connection = pika.BlockingConnection(pika.ConnectionParameters(host=RABBIT_HOST))
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 377, in __init__
self._process_io_for_connection_setup()
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 417, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 471, in _flush_output
raise exceptions.ConnectionClosed(maybe_exception)
pika.exceptions.ConnectionClosed: Connection to 31.199.53.9:5672 failed: timeout