我們試圖在基于java的alpine鏡像(anapsix/alpine-java:7_jdk)上安裝和運行nginx,但我們在啟動它時面臨以下錯誤
rc-service nginx start
/lib/rc/sh/openrc-run.sh:第250行:不能創建/sys/fs/cgroup/blkio/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/cpu/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/cpu,cpuacct/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/cpuacct/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/cpuset/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/devices/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/freezer/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/hugetlb/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/memory/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/net_cls/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/net_cls,net_prio/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/net_prio/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/perf_event/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/pids/tasks。只讀的檔案系統
/lib/rc/sh/openrc-run.sh: 第250行:不能創建/sys/fs/cgroup/systemd/tasks。只讀的檔案系統
* 開始聯網 ...
awk: /etc/network/interfaces: 沒有這樣的檔案或目錄
* ERROR:網路系統啟動失敗
* ERROR: 不能啟動nginx,因為網路不能啟動
我們已經嘗試了很多文章,但沒有一處提到如何在這個基于阿爾卑斯山的影像上解決nginx的網路問題。即使我們創建了/etc/network/interfaces檔案,我們也不知道里面的正確值是什么。下面是我們正在運行的Dockerfile
# 添加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
復制birt.conf /etc/nginx/conf.d/birt.conf
# COPY index.html /nginx
運行openrc
RUN touch /run/openrc/softlevel
RUN rc-update add nginx default
請幫助我們實作這個目標。
uj5u.com熱心網友回復:
在看到這個驚人的答案之后,我成功地讓Nginx在anapsix/alpine-java:7_jdk影像中作業。
這里是一個作業的Docker檔案:
FROM anapsix/alpine-java:7_jdk
COPY script.bash .
RUN apk --update add nginx openrc
運行openrc
RUN touch /run/openrc/softlevel
CMD bash ./script.bash
這里是script.bash中使用的CMD:
#!/bin/bash
# 告訴openrc loopback和net已經在那里了,因為docker處理網路問題
echo 'rc_provide="loopback net"' >> /etc/rc.conf
# 進入容器內部 bash
bash
在使用docker build構建鏡像之后。-t nginx_alpine_java運行以下命令:
docker run -it -p 80:80 nginx_alpine_java
現在我們在我們的容器bash中
bash-4.3# rc-service nginx status
*狀態:停止
bash-4.3# rc-service nginx start
* /run/nginx:創建目錄
* /run/nginx:糾正所有者 [ ok ] 。
* 啟動nginx ... [ok] * 啟動nginx。
我希望它對你有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/329642.html
標籤:
