На самом деле, я думаю, что ваша первая проблема - это файл #!
в init
, если вы не добавили что-то вроде #!/bin/bash
в начале, контейнер будет выдавать следующее сообщение:
shubuntu1@shubuntu1:~$ docker logs priceless_tu
standard_init_linux.go:207: exec user process caused "exec format error"
Но даже если вы решите вышеуказанную проблему, вы все равно не сможете запустить свой контейнер, причина та же, что и другие люди сказали: PID 1 должен всегда присутствовать, в вашем случае после service xxx start
окончания - выход PID 1, который также приведет кв выходе из контейнера.
Итак, чтобы решить эту проблему, вы должны установить одну команду, никогда не выходящую, минимальный работоспособный пример для вашей справки:
Dockerfile:
FROM ubuntu:14.04
RUN apt-get update && \
apt-get install -y apache2
COPY init /
RUN chmod +x /init
EXPOSE 80
ENTRYPOINT ["/init"]
init:
#!/bin/bash
# you can add other service start here
# e.g. service neo4j start as you like if you have installed it already
# next will make apache run in foreground, so PID1 not exit.
/usr/sbin/apache2ctl -DFOREGROUND