일 문제
작동하지 않습니다. 그러나 도커 컨테이너 내 응용 프로그램의 네트워크에있는 다른 컨테이너의 호스트 이름에 대한 도메인 이름 확인이 실패합니다 (단, wget
/ping
다른 컨테이너 및 해당 호스트 이름을 올바르게 확인할 수 있음).하스켈 - 알파인 도커 이미지 내부 호스트 이름 확인이 나는 내부의 하스켈 응용 프로그램과 고정 표시기 이미지를 만들기 위해 노력하고
근본 원인을 찾으려면 호스트 이름 (Network.DNS
패키지 사용)을 수동으로 확인하고 servant-client
의 IP 주소 만 사용하십시오. 그러나 이것은 단지 암호 같은 오류 메시지를 얻을 :
Network.BSD.getProtocolByName: does not exist (no such protocol name: udp)
내가 내 고정 표시기 이미지 내부의 패키지를 놓치고 생각합니다. libc6-compat
을 설치하려했지만 성공하지 못했습니다 (Debian의 libc6
은 하스켈 애플리케이션을 컴파일하는 데 사용되었습니다). 또한 /etc/protocols
에는 올바른 항목이 들어 있습니다. 도커 이미지 안에 무엇이 빠져 있습니까? Whole dockerfile, there's not much in it - 나는 응용 프로그램을 실행하는 데 사용하고
도커 이미지
고정 표시기 이미지 alpine:3.6
입니다. 이것은 응용 프로그램을 빌드하는 데 사용 된 것과 다른 이미지입니다 (약 20x 작음).
haskell 앱을 빌드하는 데 사용하는 고정 이미지는 debian:stretch
을 기반으로합니다. Dockerfile. 빌드 지침에
전체 소스 코드 (각도 부분은 생략 할 수있다) 여기에 있습니다 : 당신이 실행되도록 하스켈 코드에 대한 몇 가지 링크 종속성을 누락처럼
https://github.com/carbolymer/blockchain/tree/0b041875f71b2a09dc8568ee7b0cc22460fd5624
'strace'를 사용해 보셨습니까? – melpomene
내부 도커 ('strace -p 1'을 루트로 실행) : strace : attach : ptrace (PTRACE_ATTACH, 1) : 조작이 허용되지 않음' – carbolymer
haskell은 인터프리터없이 실행하는 바이너리를 빌드합니까? 즉 코드를 실행하기 위해 외부 바이너리가 필요한 자바, 루비 또는 노드와는 다릅니다. – Matt