错误:无法启动 nginx,因为网络无法在 alpine docker 镜像上启动

2024-01-23

我们正在尝试在基于 java 的 alpine 镜像上安装并运行 nginx (anapsix/alpine-java:7_jdk)但是当我们启动它时我们面临以下错误

rc-service nginx start
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/blkio/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/cpu/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/cpu,cpuacct/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/cpuacct/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/cpuset/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/devices/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/freezer/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/hugetlb/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/memory/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/net_cls/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/net_cls,net_prio/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/net_prio/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/perf_event/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/pids/tasks: Read-only file system
/lib/rc/sh/openrc-run.sh: line 250: can't create /sys/fs/cgroup/systemd/tasks: Read-only file system
 * Starting networking ...
awk: /etc/network/interfaces: No such file or directory
 * ERROR: networking failed to start
 * ERROR: cannot start nginx as networking would not start

我们已经尝试了很多文章,但没有提到如何修复这个基于 alpine 的映像上的 nginx 网络问题。即使我们创造/etc/network/interfaces文件中,我们不知道其中的正确值应该是什么。下面是我们正在运行的 Dockerfile

# Add Nginx
RUN apk --update add nginx openrc
RUN mkdir -p /run/nginx
RUN touch /run/nginx/nginx.pid
# RUN adduser -D -g 'nginx' nginx
# RUN mkdir /home/nginx
RUN chown -R nginx:nginx /var/lib/nginx
# RUN chown -R nginx:nginx /home/nginx
COPY birt.conf /etc/nginx/conf.d/birt.conf
# COPY index.html /nginx
RUN openrc
RUN touch /run/openrc/softlevel
RUN rc-update add nginx default

请帮助我们实现这一目标。


我设法让 Nginx 在其中工作anapsix/alpine-java:7_jdk看到这个惊人的图像后answer https://github.com/gliderlabs/docker-alpine/issues/42#issuecomment-173825611.

这是一个有效的 Dockerfile:

FROM anapsix/alpine-java:7_jdk

COPY script.bash .

RUN apk --update add nginx openrc
RUN openrc
RUN touch /run/openrc/softlevel

CMD bash ./script.bash

这是script.bash用于CMD :

#!/bin/bash

# Tell openrc loopback and net are already there, since docker handles the networking
echo 'rc_provide="loopback net"' >> /etc/rc.conf

# get inside the container bash
bash

使用构建图像后docker build . -t nginx_alpine_java运行以下命令:

docker run -it -p 80:80 nginx_alpine_java

现在我们正在容器狂欢中

bash-4.3# rc-service nginx status
 * status: stopped

bash-4.3# rc-service nginx start
 * /run/nginx: creating directory
 * /run/nginx: correcting owner                                [ ok ]
 * Starting nginx ...                                          [ ok ]

我希望它能与您合作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:无法启动 nginx,因为网络无法在 alpine docker 镜像上启动 的相关文章

随机推荐