Tag: crystal lang

在Docker容器中打开DGRAM套接字失败(权限被拒绝)

我正在运行一个应用程序,它build立并发送ICMP ECHO请求到几个不同的IP地址。 该应用程序是用Crystal编写的。 当试图从晶体泊坞窗容器内打开一个套接字时,Crystal引发一个exception:权限被拒绝。 从容器内,我没有问题运行ping 8.8.8.8 。 在macos上运行应用程序,我没有问题。 阅读apparmor和seccomp上的https://docs.docker.com/engine/security/apparmor/和https://docs.docker.com/engine/security/seccomp/页面我确定find了解决scheme,但问题仍然没有解决,即使作为docker run –rm –security-opt seccomp=unconfined –security-opt apparmor=unconfined socket_permission 更新/编辑 :挖掘到capabilities(7) ,我添加了以下行到我的dockerfile: RUN setcap cap_net_raw+ep bin/ping试图让套接字被打开,但没有改变。 谢谢! 相关的水晶sockets代码,完整的工作代码示例如下: # send request address = Socket::IPAddress.new host, 0 socket = IPSocket.new Socket::Family::INET, Socket::Type::DGRAM, Socket::Protocol::ICMP socket.send slice, to: address Dockerfile: FROM crystallang/crystal:0.23.1 WORKDIR /opt COPY src/ping.cr src/ RUN mkdir bin RUN […]