【发布时间】:2016-10-28 09:23:30
【问题描述】:
根据Alpine wiki,我必须在安装Apache 2 后运行rc-service apache2 start。但是,在容器内运行的Alpine 中没有rc-service。如何让服务命令在 Docker 容器中运行?
【问题讨论】:
-
这不是一个重复的问题,但仍然相关。感谢您注意到这一点。
根据Alpine wiki,我必须在安装Apache 2 后运行rc-service apache2 start。但是,在容器内运行的Alpine 中没有rc-service。如何让服务命令在 Docker 容器中运行?
【问题讨论】:
gliderlabs/docker-alpine issue 183 说明 docker Alpine 镜像没有service 或rc-service。
您可以看到基于nimmis/docker-alpine-micro 的nimmis/docker-alpine-apache,其中包括一个runit,用于处理自动启动和关闭进程。
该 initd 将启动 apache2 script,它调用:
exec /usr/sbin/httpd -D FOREGROUND -f /web/config/httpd.conf
【讨论】:
Alpine 默认没有安装 rc-service。您需要安装它(作为 Dockerfile 构建过程的一部分或在容器中手动安装)。
秘密调用是:
apk add openrc --no-cache
如果你想从容器外部运行它(比如 docker run),那么使用:
docker run [options etc] bin/ash -c "apk add openrc --no-cache"
PS:rc-service 对其他东西和 mariadb 之类的东西有好处(也不包括在 alpine 中)
【讨论】: