Docker容器停止响应networking调用

我有我的Django应用程序运行在docker容器内使用gunicorn。 随机,容器停止响应networking调用。 容器正在运行。 我也检查了统计信息的CPU或内存使用情况,他们似乎没有问题。 我的docker版本:

Client: Version: 1.13.0 API version: 1.25 Go version: go1.7.3 Git commit: 49bf474 Built: Tue Jan 17 09:50:17 2017 OS/Arch: linux/amd64 Server: Version: 1.13.0 API version: 1.25 (minimum version 1.12) Go version: go1.7.3 Git commit: 49bf474 Built: Tue Jan 17 09:50:17 2017 OS/Arch: linux/amd64 Experimental: false 

curl指令响应:

 * Hostname was NOT found in DNS cache * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 8001 (#0) > GET /api/health/ HTTP/1.1 > User-Agent: curl/7.35.0 > Host: localhost:8001 > Accept: */* > 

没有收到上述回应。 虽然容器内的ping工作正常。

我的fabfile看起来像这样:

 def create_gunicorn_container(tag_name, version, port, network=None): docker_options = env.copy() docker_options.update({'tag_name': tag_name, 'version': version, 'port': port}) if network: docker_options['network'] = network env.sudo( 'docker run -v %(log_root)s:/ebs1/logs --name my_app_server -p%(port)s:8001 --network=%(network)s ' \ '--env-file=%(env_file)s -itd %(DOCKER_REGISTRY)s/%(tag_name)s:%(version)s ' \ '%(gunicorn_script_path)s' % docker_options) 

Docker文件:

 # Dockerfile # FROM directive instructing base image to build upon FROM python:2-alpine ARG req_file=requirements.txt RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements /usr/src/app/requirements COPY requirements.txt /usr/src/app COPY external_config /usr/src/app/external_config RUN apk add --update bash \ && rm -rf /var/cache/apk/* \ && apk add --no-cache --virtual .build-deps \ build-base libxslt libxml2 libxslt-dev libxml2-dev postgresql-dev libffi-dev \ && pip install -r $req_file \ && find /usr/local \ \( -type d -a -name test -o -name tests \) \ -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ -exec rm -rf '{}' + \ && runDeps="$( \ scanelf --needed --nobanner --recursive /usr/local \ | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | sort -u \ | xargs -r apk info --installed \ | sort -u \ )" \ && apk add --virtual .rundeps $runDeps \ && apk del .build-deps \ && mkdir -p /ebs1/logs \ && mkdir -p /var/logs/b2b \ && mkdir -p /usr/src/scripts/ COPY myapp/ /usr/src/app/ COPY scripts /usr/src/app/scripts VOLUME /usr/src/app/static EXPOSE 8001 

发生这种情况时,我没有看到任何Docker日志。 我运行docker logs b2b_app_server --follow此。 此外,这只有在我重新启动泊坞窗服务本身之前得到解决,直到上面的curl没有响应返回。

如果这是一个已知的问题,解决scheme将是伟大的,否则所有其他的参数/工具,我应该看看debugging或解决这个问题?

Gunicorn脚本:

 from psycogreen.gevent import patch_psycopg bind = "0.0.0.0:8001" workers = 4 worker_class = "gevent" timeout = 7200 loglevel = 'debug' errorlog = "/ebs1/logs/gunicorn.error.log" accesslog = "/ebs1/logs/gunicorn.access.log" access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"' proc_name = "myapp" def post_fork(server, worker): # patch psycopg2 for gevent compatibility patch_psycopg()