Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker容器与主机不同步_Node.js_Amazon Web Services_Docker - Fatal编程技术网

Node.js Docker容器与主机不同步

Node.js Docker容器与主机不同步,node.js,amazon-web-services,docker,Node.js,Amazon Web Services,Docker,我有一个简单的节点应用程序,它向AWS SQS发送消息。对于本地开发,我为AWS SDK提供了区域,队列URL,访问密钥ID,secretAccessKey 在我将应用程序对接并作为容器运行之前,一切正常。然后,每当SQS想要做某事时,我就会得到以下错误 {SignatureDesNotMatch:签名过期:20161211T3303Z现在早于20161211T142227Z(20161211T143727Z-15分钟) 如果我添加correctClockSkew:true,它会更正问题 do

我有一个简单的节点应用程序,它向AWS SQS发送消息。对于本地开发,我为AWS SDK提供了
区域
队列URL
访问密钥ID
secretAccessKey

在我将应用程序对接并作为容器运行之前,一切正常。然后,每当SQS想要做某事时,我就会得到以下错误

{SignatureDesNotMatch:签名过期:20161211T3303Z现在早于20161211T142227Z(20161211T143727Z-15分钟)

如果我添加
correctClockSkew:true
,它会更正问题

docker在MacOS中运行节点时如何要求
correctClockSkew:true

节点应用程序

process.env.TZ = 'Europe/London';
const AWS = require('aws-sdk');

AWS.config.update({
  region: 'eu-west-1',
  correctClockSkew: true //this has to be set when running inside a docker container?
});

const sqs = new AWS.SQS({
  apiVersion: '2012-11-05',
});

sqs.sendMessage({
  QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/522682236448/logback-paddle-prod-errors',
  MessageBody: 'HelloSQS',
}, (err, data) => {
  if (err) throw err;
});
Dockerfile

FROM node
RUN mkdir -p /usr/lib/app
WORKDIR /usr/lib/app
COPY app/ /usr/lib/app/
RUN npm install
CMD ["node", "index.js"]
docker run-d用户/图像

编辑


最初我之所以提出这个问题是因为我不断收到AWS不正确的时间错误,现在我也通过ElasticSearch收到了。为什么我的容器在大约15分钟内与主机不同步。

Docker在Windows和MacOS上运行在虚拟机内部,而虚拟机的时钟可能与笔记本电脑的操作系统的时钟不同步。存在以下问题:e我见过一些解决方案,主要是一次性命令,包括:

docker run -it --rm --privileged --pid=host debian nsenter -t 1 -m -u -n -i date -u $(date -u +%m%d%H%M%Y)
从这里可以看出:

我见过的最好的解决方案是在Privileged模式下运行ntp容器,以便它可以不断调整docker主机上的时间:

docker run -d --restart unless-stopped --name ntp --privileged tutum/ntpd
有关更多详细信息,请参阅docker hub回购协议:

docker run -d --restart unless-stopped --name ntp --privileged tutum/ntpd