Tag: 集装箱

从Docker容器中的Django + Celery诊断API超时

我有一个9服务的微服务架构,每个服务运行在自己的容器中。 这些服务使用多种技术,但主要是Django,Celery(使用Redis队列),共享的PostgreSQL数据库(在自己的容器中)以及一些更具体的服务/库。 微服务通过REST API相互交stream。 问题是,有时以一种随机的方式,一些容器API不再响应,卡住了。 当我在他们的界面上发出一个curl请求时,我得到一个超时。 那一刻,所有其他的容器都回答得很好。 有两个托盘容器。 我注意到,这两个阻塞容器使用: Django的 Django的rest框架 芹菜 Django的芹菜 作为Celery broker的embedded式Redis 访问位于另一个容器中的PostgreSQL数据库 我不知道如何解决这个问题,因为没有相关的信息在服务或Docker日志中可见。 问题是这些API只是在随机时刻被卡住了。 为了使它再次工作,我需要停止阻塞容器,并再次启动。 我想知道如果这可能是一个pythonGIL问题 ,但我不知道如何检查这个假设… 任何想法如何麻烦这个?

如何使容器在ECS中相互通信而无需链接和端口映射?

我没有find解决scheme,这两个容器在单独的任务定义可以相互沟通。 因此,我按照答案把两个容器连接起来,在相同的任务定义中运行良好。首先感谢答案。 但是,当我阅读ECS文档时,我发现以下段落使我感到困惑: 在单个容器实例上并置的容器可能能够相互通信而不需要链接或主机端口映射。 使用安全组和VPC设置在容器实例上实现networking隔离。 但我无法find进一步的文件如何实现这一点。 我知道,docker社区尝试使用 – –network和弃用 – –link 。 我不确定AWS是否进行了一些更改,以便以某种方式启用这些更改。 有人可以帮助我了解如何实现这一目标? 由于容器名称和IP始终是由ECSdynamic分配的,因此如果在不使用链接和端口映射的不同任务定义中,如何从一个容器与另一个容器进行通信?

定制的Docker MongoDB镜像卡住了:无法停止,杀死,打开

我做了NodeJS&mongoDB Docker镜像,下面是Dockerfile: FROM ubuntu:14.04 MAINTAINER K. Haejin "haejin.kim419@gmail.com" ENV DEBIAN_FRONTEND noninteractive RUN apt-get update RUN apt-get -qq update RUN apt-get install -y nodejs npm RUN apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10 RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list RUN apt-get update && apt-get install -y mongodb-org=2.6.1 mongodb-org-server=2.6.1 mongodb-org-shell=2.6.1 mongodb-org-mongos=2.6.1 mongodb-org-tools=2.6.1 RUN update-alternatives –install […]

在Bluemix中使用docker-compose时不一致的问题

我在使用docker-compose在Bluemix / IBM容器中部署和链接3个容器时出现问题。 我正在使用的撰写文件已经工作,并继续工作,但它是非常不一致的。 当它失败时,我得到以下回应: Recreating xxxxx_1 Recreating yyyyy_1 Creating zzzzz_1 ERROR: for server 'message' Traceback (most recent call last): File "docker-compose", line 3, in <module> File "compose/cli/main.py", line 64, in main File "compose/cli/main.py", line 116, in perform_command File "compose/cli/main.py", line 876, in up File "compose/project.py", line 416, in up File "compose/parallel.py", line 66, in […]

如何将STDIN发送到docker过程

我有一个在开发中的docker容器中运行的nodemon。 代码更改时,我已成功设置实时重新加载。 不过有时候我会在nodemon崩溃的时候写一些代码。 当您键入'rs'(当在本地运行时),可以手动重新启动Nodemon。 问题是,在docker集装箱内,我无法重新启动它。 我已经尝试了以下,没有运气: docker exec -it add92j rs ====> rs not found docker exec -it add92j sh -c echo rs ====> just docker exec -it add92j sh -c echo rs rs 我也尝试docker attach ,然后键入rs,但它不起作用。 我也尝试用docker exec -it sh来使用shell,用ps aux获取进程,然后: echo rs > /proc/PID/fd/0 但是这也行不通。 (注意我已经尝试了rs和rs \ n并使用printf和echo)的所有上述变体。 在nodemon github中,我看到它寻找'rs \ n'来触发重新启动,并且有对SIGUSR2的引用。 因此,我也尝试kill […]

在Bluemix中使用容量和redmine docker容器

我正在尝试使用Redmine官方Docker在Bluemix容器中设置一个Redmine实例; 我可以build立图像,并运行容器没有问题。 如果我向容器中添加一个卷,则构build失败,并且以此日志结尾: chown:无法读取目录'文件/文件':权限被拒绝 8chown:改变“文件”的所有权:权限被拒绝 我知道这是因为容器中的用户没有读/写权限。 我已经尝试了一些解决scheme尝试,如使用 USER根 在chown之前。 即使在chown之后声明了卷(正如Docker页面中所build议的那样) 另外,我遇​​到的所有其他解决scheme都涉及ssh到容器; 我不能做的事情,因为容器从来没有运行与音量的第一位。 这里是我的Dockerfile和entrypoint.sh的副本 FROM ruby:2.2-slim # add the volumeeditor to grant permissions in bluemix RUN groupadd –gid 1010 redmine RUN useradd –uid 1010 –gid 1010 -m –shell /bin/bash redmine RUN apt-get update && apt-get install -y –no-install-recommends \ ca-certificates \ wget \ && rm -rf […]

依赖于其他容器中的文件的Docker容器

我有单一的应用程序,我试图containerize。 foler结构是这样的: –app | |-file.py <-has a variable foo that is passed in –configs | |-variables.py <- contains foo variable 现在,我有一个容器中的应用程序和容器中的configuration。 当我尝试启动应用程序容器时,它失败,因为依赖configuration容器variables。 我究竟做错了什么? 我该如何处理这个问题。 应用程序和configuration现在应该在一个大的容器? 我在想Docker-compose可以解决这个问题。 思考?

如何以本地方式在容器中安装文件夹

当在容器中安装一个volumen时,默认情况下容器会看到由shfs安装的主机文件夹。 我有一个应用程序,只看到本地文件夹,所以它放弃被认为是远程文件夹。 有没有办法在本地容器中安装卷? 我的docker工人: /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d –name="iaso_backup_manager" –net="bridge" –privileged="true" -e TZ="Europe/Paris" -e HOST_OS="unRAID" -e "DEVICE"="device" -e "PASSWORD"="password" -p 5000:5000/tcp -p 5314:5314/tcp -v "/mnt/user/":"/mnt/":ro nitelmursoftware/iaso_backup_manager 我的docker有这样的文件夹: root@eb878b3879cb:/# mount | grep mnt shfs on /mnt type fuse.shfs (ro,noatime,user_id=0,group_id=0,allow_other) 该安装types/方式对于我创build容器的应用程序无效,IASO备份pipe理器:-(

如何使用Dockerfile将主容器链接到数据库容器?

Docker有一个非常方便的方法,用如下命令将主容器链接到db容器: docker run –link db:db user/main 这已经很方便了。 不过,我相信这样的命令还是笨拙的: docker run user/ultra 其中ultra是一个已经将主容器连接到db容器的容器。 是否有可能通过编写一个好的Dockerfile来达到这个Dockerfile 。 我想我可以启动Dockerfile FROM user/main 但是如何获得第二个容器,然后将它们与Dockerfile链接? 谢谢。

使用cp命令后,Docker rpc错误

我有一个容器,在运行docker cp一次后停止响应docker exec -i命令。 这是一个例子: [root@host dir]# docker stop r0 && docker start r0 && docker exec -i r0 pwd && docker cp r0:/root/myfile . && docker exec -i r0 pwd r0 r0 / rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "process_linux.go:75: starting setns process […]