Я пытаюсь использовать Varnish 4.1 с Docker (1.9.1). Я создал образ докера в Alpine Linux 3.2 с его musl-libc, чтобы уменьшить размер образа.
Dockerfile:
FROM alpine:3.2
RUN echo 'http://dl-4.alpinelinux.org/alpine/v3.3/main' >> /etc/apk/repositories && \
apk update && apk upgrade -U -a && \
apk add --update varnish \
&& rm -rf /var/cache/apk/*
Add Comment
Когда я пытаюсь запустить внутри контейнера, иногда возникает ошибка segfault, но иногда нет:
# varnishd -F -W epoll -f /etc/varnish/default.vcl
child (4081) Started
Pushing vcls failed:
CLI communication error (hdr)
Stopping Child
Child (4081) died signal=11
Child (4081) Panic message:
Assert error in child_sigsegv_handler(), mgt/mgt_child.c line 297:
Condition(Segmentation fault by instruction at 0x7f8bec8af9e8) not true.
version = varnish-4.1.0 revision 3041728
ident = Linux,3.13.0-66-generic,x86_64,-junix,-smalloc,-smalloc,-hcritbit,epoll
Could not create _.vsm.4071: File exists
Иногда, когда я получаю 2-3 ошибки подряд и 3-й, 4-й раз, он работает успешно.
Моя среда:
# gcc --version
gcc (Alpine 5.2.0) 5.2.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.2.3
PRETTY_NAME="Alpine Linux v3.2"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
# ldd --version
musl libc
Version 1.1.12
# docker version
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Кроме того, когда я запускаю его успешно и пытаюсь очистить кеш (запретить), дочерний процесс завершается с ошибкой segfault.
Это вызвано musl-libc?
Наткнулся на ту же проблему. Похоже на альпийский образ. Перешел на убунту и работает нормально.