当使用Docker在EC2上发送UDP数据包时,我有时会发现这个奇怪的错误(并非所有发送的消息都有异常),这在使用OpenNebula的内部集群中永远不会发生.我已经允许所有EC2实例上的每个端口上的所有入站/出站流量.这是一个例外:
2017-01-19 10:01:53,170 - ERROR: Exception caught for address: 10.99.0.153
Traceback (most recent call last):
File "./server.py", line 56, in <module>
sock.sendto(bytes('{}'.format(i), "utf-8"), (address, PORT))
OSError: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)
我用Ubuntu服务器16.04和Docker 1.12.6运行5个c4.xlarge实例.他们都在同一个码头群中.
我使用覆盖驱动程序创建服务和网络子网.此服务具有挂载点以从每个对等方获取日志.我运行150个对等体,每个对等体的内存限制为300MB.
我的Dockerfile:
FROM debian:jessie
RUN echo 'deb http://mirror.switch.ch/ftp/mirror/debian/ jessie-backports main' >> /etc/apt/sources.list && \
apt-get -yqq update && \
apt-get -yqq dist-upgrade && \
apt-get -yqq install --no-install-recommends dnsutils wget curl ntp python3 && \
apt-get -yqq clean
CMD ["/opt/epto/container-start-script.sh"]
Run Code Online (Sandbox Code Playgroud)
我使用以下shell脚本作为我的CMD:
#!/usr/bin/env bash
MY_IP_ADDR=$(/bin/hostname -i)
MY_IP_ADDR=($MY_IP_ADDR)
./server.py ${MY_IP_ADDR[0]} …Run Code Online (Sandbox Code Playgroud) 我想知道,为什么在C中隐式从整数转换为char?
如果例如:
int i = 2789;
printf("%c\n",i);
Run Code Online (Sandbox Code Playgroud)
会给我一个char回来,因为它会从最重要的那些开始截断位.但是,如果它意味着你将失去精确度,那么通常你不能真正地暗示,所以为什么我可以在这里做呢?