问题标签 [coreos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
28510 浏览

docker - CoreOS重启后如何自动重启Docker容器?

假设 Docker 守护进程在操作系统重新启动时由任何类似 init.d 或 systemd 的进程自动重新启动,那么重新启动一个或多个 Docker 容器的首选方法是什么?例如,我可能在反向代理或数据库服务器后面有许多 Web 服务器。

0 投票
2 回答
15647 浏览

docker - 如何在coreos中更新docker

docker version在 ec2 上输入了一个新配置的 coreos 即时消息,我收到了这条消息

我如何更新码头工人?

0 投票
1 回答
1270 浏览

docker - docker容器如何与主机有不同的风味

我对 linux 容器的理解是,每个容器都使用相同的主机内核,容器上的任何安装都只是主机上的一个隔离文件系统层。

我正在阅读 coreos 入门指南。它展示了如何在包含 coreos 的主机上启动 ubuntu 容器。

这怎么可能 ?主机和容器怎么会有不同的味道?

谢谢,穆尔塔萨

0 投票
1 回答
1637 浏览

cluster-computing - 在 CoreOS 上使用 etcd 进行服务发现时如何处理陈旧数据?

我目前正在修补 CoreOS 并基于它创建一个集群。到目前为止,在单主机上使用 CoreOS 的体验还是相当流畅的。但是在服务发现方面,事情变得有点模糊。不知何故,我没有得到整体的想法,因此我现在在这里寻求帮助。

我想做的是让两个 Docker 容器在第一个依赖于第二个的地方运行。如果我们谈论的是纯 Docker,我可以使用链接容器来解决这个问题。到现在为止还挺好。

但是这种方法不能跨机器边界工作,因为 Docker 不能跨多个主机链接容器。所以我想知道如何做到这一点。

到目前为止我所了解的是,CoreOS 处理这个问题的想法是使用它的etcd服务,它基本上是一个分布式键值存储,可以在每个主机上通过 port 本地访问4001,所以你不必处理(作为 的消费者etcd)具有任何网络详细信息:只需访问localhost:4001即可。

所以,在我的脑海里,我现在有这样的想法,这意味着当一个提供服务的 Docker 启动时,它会在本地注册自己(即它的 IP 地址和它的端口)etcd,并etcd负责在整个网络。这样,例如,您将获得键值对,例如:

现在,当另一个 Docker 容器需要访问 aRedisService时,它会从它们自己的本地获取 IP 地址和端口etcd,至少在信息已通过网络分发后。到现在为止还挺好。

但是现在我有一个我无法回答的问题,这已经让我困惑了几天:当服务出现故障时会发生什么?谁清理里面的数据etcd?如果没有清理,所有客户端都会尝试访问不再存在的服务。

目前我能想到的唯一(可靠)解决方案是使用etcd的 TTL 功能来处理数据,但这需要权衡:要么您的网络流量很高,因为您需要每隔几秒发送一次心跳,否则您必须忍受陈旧的数据。两者都不好。

我能想到的另一个“解决方案”是让服务在出现故障时自行注销,但这仅适用于计划中的关闭,不适用于崩溃、停电……</p>

那么,你如何解决这个问题?

0 投票
3 回答
27245 浏览

node.js - docker:创建新用户后运行 npm install 时遇到问题

因此,根据这篇文章,我还有另一个关于在 CoreOS 上的 Docker 下安装基于 node.js 的框架的后续问题。

所以,因为npm从 root 安装很挑剔package.json,我必须创建一个非 root sudo 用户才能安装包。这是我Dockerfile目前在我们的仓库中的样子,建立在一个 ubuntu 图像之上:

我知道这是一种不优雅的做事方式,但是我不知道如何在这里完成 npm 安装。当我尝试上述方法时,在尝试安装所有软件包时都会出现错误:

关于我应该如何修改我的 Dockerfile 有什么想法吗?我只能假设这是一些许可问题,与我在nonroot上面配置用户的方式有关,这可能是 Docker 框架特有的;我只是在香草 ubuntu 安装上做这种事情没有问题,尽管不是来自脚本。

0 投票
4 回答
10558 浏览

ubuntu - 在不同主机上的 Docker 中运行 cron 的问题

我试图让一个 docker 容器运行来管理我的 cronjobs

我在使用 centOS 6.5 基础的 docker 容器中运行一个非常简单的 cron 作为测试

如果容器在 CoreOS 主机上运行,​​它工作正常,但是如果我在 ubuntu 13.10 主机上运行容器,则不会执行 cron。(我虽然主机没有影响容器中运行的内容)

两台主机都在运行 docker 0.8

我是否遗漏了一些明显的东西,或者这是一个错误?

谢谢

0 投票
0 回答
577 浏览

linux - How to reliably get path to attached VirtualBox storage device in Vagrantfile?

In my Vagrantfile, using VirtualBox, I'm trying to dynamically create/mount arbitrary storage devices on the same storage controller (e.g. for persistence on a readonly filesystem) to specific paths on the VM (not using Guest Additions, nfs, etc). Currently jumping through a lot of hoops (see the gist below) trying to accomplish this. For example, here's the workflow I'm attempting:

  1. Use provided image path (VDI, VMDK, etc on the host filesystem) to VBoxManage createhd if doesn't exist (working)
  2. Attach storage device from #1 to the storage controller via VBoxManage storageattach (working)
  3. Mount the attached storage device's primary partition at the specified mountpoint (not working)

The step-by-step so far for each device is thus (see this gist, partially pseudocode):

  1. Get device UUID (according to VBox)
  2. Get the real path to the device on the guest (via /dev/disk/by-uuid/<uuid>)
  3. Create primary partition if the device was just created
  4. Mount the device (optionally, add to /etc/fstab for persistence)

The problem is that, since I don't want to assume/predict that a particular device will be available at /dev/sdX, I can't come up with a reliable way to get a reference to the unmounted device (in order to mount it) on the guest because the VBox UUID and the guest OS device UUID don't seem to match, which is key. Are they supposed to be the same? If not, how would I reliably get the device path on the guest, only having the VBox information? Is there a better way to accomplish this?

As an aside, I am testing with CoreOS (which has a readonly root mount), and don't want to use Guest Additions or NFS from the host for this particular purpose - I am intentionally trying to use storage devices.

0 投票
2 回答
1459 浏览

macos - vagrant-coreos 映像在重新启动时在 OS X 中的 virtualbox 4.3.2 中删除共享文件夹

在 Mac OS X 上的 Vagrant 中运行这个CoreOS 映像,利用 VirtualBox 4.3.2 版本。

当我启动图像时,出现以下错误:

尽管我在 OS X 上运行 VirtualBox,但它似乎不支持来宾添加

尽管如此,我还是可以通过 手动添加共享文件夹,尽管即使我选择和Settings -> Shared Folders,这些文件夹在映像重新启动时也不会持续存在。Auto-mountMake permanent

此 CoreOS 映像包含随机重新启动作为其安全策略的一部分,因此在重新启动后我会丢失共享文件夹,并且如果不完全删除映像并重新加载,则无法重新获得它。

为什么会这样?

0 投票
3 回答
4861 浏览

bash - 尝试在 docker 中重新创建主管教程,遇到错误(许可?)

我试图在 docker 上下文中重新创建本教程中的步骤,ubuntu 映像安装在 OS X 上的 virtualbox 中运行的 coreos 下。

我已经设置了一个 Dockerfile,它具有以下步骤:

它将以下文件从相对/etc/目录中复制出来:

long.sh

long_script.conf

/var/log/long.out.log它正确加载了所有内容,但是在或中都没有相应的输出/var/log/long.err.log,尽管两个文件都存在于该目录中。

当我使用 / 加载图像时/bin/bash,我会尝试以下操作:

  1. 我可以成功运行service supervisor restart并获得Restarting supervisor:输出。

  2. 但是当我尝试使用 运行任何函数时supervisorctl,我得到错误,即unix:///var/run/supervisor.sock refused connection

我检查了输出,/var/log/supervisor/supervisord.log它给了我:

谷歌搜索建议我包含一个准系统supervisord.conf文件,该文件明确地将应用程序指向该supervisord.sock文件,因此我在 Dockerfile 中添加了以下内容:

然后添加一个supervisord.conf看起来像这样的文件:

包括这个之后

  1. 我不再有任何一个long.err.loglong.out.log填充在/var/log/所有。
  2. 我可以运行service supervisor restart,但现在当我运行时supervisorctl,我得到的错误变为unix:///var/run/supervisord.sock no such file.

我检查了输出,/var/log/supervisor/supervisord.log它给了我:

认为这可能是用户权限问题,我尝试将supervisord.conf文件切换到

将以下内容添加到我的之后Dockerfile

但这让我在编译时出现以下错误

登录/bin/bash/并立即执行cat/var/log/supervisor/supervisord.log产生:

这里有什么问题?我只是希望能够通过运行这个 shell 脚本supervisord并在日志文件中观察它的输出。

0 投票
1 回答
1297 浏览

docker - 在 CoreOS 上的同一个 Docker 容器中运行两个服务?

我对 Docker 和 CoreOS 有点陌生。我想我对容器的概念以及它们之间的关系有点不清楚。

我正在尝试设置一个基于 CoreOS 的服务器,它运行两个服务:一个自定义服务器(称为 myserver)和一个 memcached 服务器(只能由 myserver 访问)。

所以我想我已经在 CoreOS 机器上安装了一个 myserver.service 文件,它可以使用这样的行成功启动 upi myserver :

所以我的问题是,为了启动 memcached 服务器,我是否要在 CoreOS 中创建一个新的 memcached.service 文件?如果是这样,它是否应该使用与自定义服务器相同的容器“my_container”?如果他们不使用同一个容器,myserver 是否能够访问 memcached 服务器?