小编ai0*_*307的帖子

docker run <IMAGE> <MULTIPLE COMMANDS>

我正在尝试运行这样的MULTIPLE命令.

docker run image cd /path/to/somewhere && python a.py
Run Code Online (Sandbox Code Playgroud)

但这给了我"没有这样的文件或目录"错误,因为它被解释为......

"docker run image cd /path/to/somewhere" && "python a.py"
Run Code Online (Sandbox Code Playgroud)

似乎需要一些像""或()这样的ESCAPE字符.

所以我也试过了

docker run image "cd /path/to/somewhere && python a.py"
docker run image (cd /path/to/somewhere && python a.py)
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.

我搜索了Docker Run Reference但没有找到有关ESCAPE字符的任何提示.

docker docker-image

218
推荐指数
6
解决办法
13万
查看次数

为什么AWS Lambda函数会针对单个事件多次调用?

我正在尝试创建执行以下过程的AWS Lambda函数.

  • 接收S3"Put"事件
  • 从S3获取fileA
  • 从S3调用lambda获取fileB
  • 仅启动一个EC2实例
  • 为新的EC2实例创建标记

问题:意外启动了多个(5)实例.

已成功创建实例,但还会启动其他4个实例.共启动了5个实例.

日志

在此功能的Log Streams中,我发现了4个Streams用于此调用.每个Stream都不显示任何错误或异常,但似乎该函数重复执行.

审讯

我猜测该功能已超时,然后重新运行.

然后,我Timeout从5s变为60s并将文件放在S3上.它以某种方式影响了.仅出现2个Log Streams,第一个显示该功能仅执行一次,第二个显示该功能已执行两次.已启动实例的数量为3.

但是,我不知道为什么要启动多个(3)实例.

欢迎任何评论!先感谢您 :-)

我的Lambda功能

我的Lambda功能如下.(它被简化为隐藏凭证信息,但它不会丢失其基本结构)

var AWS = require('aws-sdk');

function composeParams(data, config){
  var block_device_name = "/dev/xvdb";
  var security_groups = [
    "MyGroupName"
  ];
  var key_name = 'mykey';
  var security_group_ids = [
    "sg-xxxxxxx"
  ];
  var subnet_id = "subnet-xxxxxxx";

  // Configurations for a new EC2 instance
  var params = {
    ImageId: 'ami-22d27b22',      /* required */
    MaxCount: 1,                  /* required */
    MinCount: 1,                  /* required */ …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-ec2 amazon-web-services aws-sdk aws-lambda

8
推荐指数
1
解决办法
4735
查看次数

Ansible:如何为主机设置序列号

我正在尝试在EC2上配置主机,因此我正在使用Ansible Dynamic Inventory.

我想做的是; 设置每个节点的序列号.

例如:Zookeeper的"myid"配置

Zookeeper需要为每个节点命名为"myid"的序列号; 1为hostA,2为hostB,3为hostC,依此类推.

这是我的剧本中将"myid"文件复制到主机的部分.

- name: Set myid
  sudo: yes
  template: src=var/lib/zookeeper/myid.j2 dest=/var/lib/zookeeper/myid
Run Code Online (Sandbox Code Playgroud)

而且myid.j2应该是这样的下面.

{{ serial_number }}
Run Code Online (Sandbox Code Playgroud)

问题是:变量"{{serial_number}}"应该是什么样的?

jinja2 ansible ansible-playbook apache-zookeeper ansible-inventory

3
推荐指数
1
解决办法
2996
查看次数

Marathon上的Docker容器没有完成

我有Mesos集群由3台CentOS6.5机器组成.

ZooKeeper和Mesos-Master在其中一台机器上运行,Mesos-Slave在每台机器上运行.

此外,Marathon正在主节点上运行.

然后,我按照 Mesosphere的指示,尝试在Marathon上运行docker容器.

job.json 如下,

{
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "libmesos/ubuntu"
    }
  },
  "id": "ubuntu",
  "instances": 1,
  "cpus": 0.5,
  "mem": 512,
  "uris": [],
  "cmd": "date -u +%T"
}
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令,

curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" <master-hostname>:8080/v2/apps -d@job.json
Run Code Online (Sandbox Code Playgroud)

然后在Marathon Web UI上,我可以看到Docker容器即使在很长一段时间后也处于"部署"状态.

在Mesos-Master Web UI上,我可以看到任务在很长一段时间后处于"STAGING"状态.

在Sandbox窗格中,我可以看到stdout,命令似乎已完成successfly.没问题.

stderr是这样的,

I0416 19:19:49.254998 29178 exec.cpp:132] Version: 0.22.0
I0416 19:19:49.257824 29193 exec.cpp:206] Executor registered on slave 20150416-160950-109643786-5050-30728-S0
Run Code Online (Sandbox Code Playgroud)

stdout是这样的,

Registered executor on master-hostname
10:19:49
Run Code Online (Sandbox Code Playgroud)

但我希望容器(TASK)在完成命令后完成. 可能吗? 如果可能,怎么做? …

marathon docker mesos mesosphere

2
推荐指数
1
解决办法
998
查看次数