알파인 리눅스에 도커를 깔고나서
nginx를 도커 컨테이너로 올려봤고 잘 동작했다.
그런데!
node 도커 컨테이너로 올리려 했는데 자꾸 segfault 에러가 나서 컨테이너가
실행하자마자 바로 죽어버리는 현상에 맞닥뜨렸다.
로그내용은 다음과 같다.
Apr 16 10:22:29 localhost kern.info kernel: [ 3660.266769] node[4245]: segfault at f ip 0000000000ff4830 sp 000074feff9fa3a0 error 6 in node[400000+1b9b000]
Apr 16 10:22:29 localhost kern.alert kernel: [ 3660.266780] grsec: Segmentation fault occurred at 000000000000000f in /usr/local/bin/node[node:4245] uid/euid:0/0 gid/egid:0/0, parent /usr/bin/docker-containerd-shim[docker-containe:
4228] uid/euid:0/0 gid/egid:0/0
Apr 16 10:22:29 localhost kern.alert kernel: [ 3660.266804] grsec: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/local/bin/node[node:4245] uid/euid:0/0 gid/egid:0/0, parent /usr/bin/docker-con
tainerd-shim[docker-containe:4228] uid/eui
위 링크처럼 나랑 같은 증상을 겪고 알파인리눅스에 대해 불만섞인 글도 보고
https://docs.docker.com/install/#server
도커 문서에서 알파인 리눅스를 지원한다는 단서를 찾을 수 없었어서
알파인리눅스에서 도커를 돌리는것을 포기하려하다가
apk add --no-cache paxctl
paxctl -cm `which node`
그 와중에 아래 메시지가 떳는데
file /usr/local/bin/node had a PT_GNU_STACK program header, converted
paxctl의 -c 옵션으로 인한 것이었다.
-c create the PT_PAX_FLAGS program header if it does not exist by converting the PT_GNU_STACK program header if it exists
-m do not enforce secure memory protections (NOMPROTECT)
일단 해결 완료
pax란? grsec이란?
+추가)
위 방식대로 해결을 했다고 생각했었는데 아래와 같은 애러가 발생하기 시작했다.
Apr 17 17:10:51 localhost kern.err kernel: [114567.951624] ata1: exception Emask 0x50 SAct 0x0 SErr 0x4090800 action 0xe frozen
Apr 17 17:10:51 localhost kern.err kernel: [114567.951629] ata1: irq_stat 0x00400040, connection status changed
Apr 17 17:10:51 localhost kern.err kernel: [114567.951634] ata1: SError: { HostInt PHYRdyChg 10B8B DevExch }
Apr 17 17:10:51 localhost kern.info kernel: [114567.951647] ata1: hard resetting link
Apr 17 17:10:52 localhost kern.info kernel: [114568.990563] ata1: SATA link down (SStatus 0 SControl 300)
Apr 17 17:10:57 localhost kern.info kernel: [114574.074158] ata1: hard resetting link
Apr 17 17:10:57 localhost kern.info kernel: [114574.388215] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
Apr 17 17:10:57 localhost kern.info kernel: [114574.393844] ata1.00: configured for UDMA/133
Apr 17 17:10:57 localhost kern.info kernel: [114574.393853] ata1: EH complete
하드웨어 문제일 수도 있지만 어쩌면 도커 문제일 수도 있지 않을까 해서 도커를 삭제하고 에러 메시지 출력을 지켜보기로 했다.
5월 4일
도커를 삭제했지만 여전히 로그에 emask exception 발생..
바이오스 업데이트와 사타 케이블 교체를 할 예정이다.
5월 7일
아직 바이오스 업데이트와 사타케이블 교체를 하지 않았는데
도커를 삭제 한지 하루정도 뒤부터 3일동안 로그에 에러가 안찍힌다..
5월 8일
가 아니라 여전히 emask 에러 발생함 오늘 케이블 교체해야겠다
5월 17일
케이블 교체해도 여전히 에러발생 링크의
It's Kernel Bug on ata ACPI. I put "options libata noacpi=1" on /etc/modprobe.d/options and the ERROR is gone.
여기서 말하는대로 일단 해놓아보았다.
'Docker' 카테고리의 다른 글
ERROR: The Compose file './docker-compose.yml' is invalid because: (0) | 2018.06.03 |
---|---|
docker redis 커스텀 설정 (0) | 2018.05.04 |
Dockerfile에 ssh 세팅 (0) | 2017.08.19 |
Docker) bash.exe 파일을 찾는 중입니다 (2) | 2017.08.19 |
/bin/sh: 1: Syntax error: "(" unexpected (0) | 2017.08.19 |