gpt4 book ai didi

docker - Docker容器无法与非root用户一起运行

转载 作者:行者123 更新时间:2023-12-02 21:32:22 27 4
gpt4 key购买 nike

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -yq --no-install-recommends \
apt-utils \
curl \
# Install git
git \
# Install apache
apache2 \
# Install php 7.2
libapache2-mod-php7.2 \
php7.2-cli \
php7.2-json \
php7.2-curl \
php7.2-fpm \
php7.2-gd \
php7.2-ldap \
php7.2-mbstring \
php7.2-mysql \
php7.2-soap \
php7.2-sqlite3 \
php7.2-xml \
php7.2-zip \
php7.2-intl \
php-imagick \
# Install tools
openssl \
nano \
graphicsmagick \
imagemagick \
ghostscript \
mysql-client \
iputils-ping \
locales \
sqlite3 \
ca-certificates \
&& apt-get clean && rm -f /var/www/html/index.html && rm -rf /var/lib/apt/lists/**

ENV LANG en_US.utf8

RUN groupadd --gid 5000 newuser \
&& useradd --home-dir /home/newuser --create-home --uid 5000 \
--gid 5000 --shell /bin/sh --skel /dev/null newuser

WORKDIR /var/www/html

COPY index.php /var/www/html

EXPOSE 80

HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl -f http://localhost || exit 1

CMD ["apachectl", "-D", "FOREGROUND"]

USER newuser
我得到的错误:
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs Action '-D FOREGROUND' failed. The Apache error log may have more information.

最佳答案

就像@亨利写道:

A non root user cannot bind to ports below 1024. Use a port that is higher e.g. 8080.


我建议您更改apache端口,如果需要从主机访问apache,请将端口8080映射到docker中的80。
例如
docker build -t myapacheimg .
docker run -it --rm -p 8080:80 myapacheimg
为了使这些东西正常工作,您需要执行以下操作:
  • 更改/etc/apache2/ports.conf中的端口
  • 更改/etc/apache2/sites-enabled/000-default.conf中的虚拟主机
  • 更改/ var / log / apache2和/ var / run / apache2文件夹的所有权

  • 换句话说,这是Dockerfile的摘录:
    ...
    && apt-get clean && rm -f /var/www/html/index.html && rm -rf /var/lib/apt/lists/**

    COPY ./ports.conf /etc/apache2/ports.conf
    COPY ./000-default.conf /etc/apache2/sites-enabled/000-default.conf

    ENV LANG en_US.utf8

    RUN groupadd --gid 5000 newuser \
    && useradd --home-dir /home/newuser --create-home --uid 5000 \
    --gid 5000 --shell /bin/sh --skel /dev/null newuser

    RUN chown -R newuser /var/log/apache2 /var/run/apache2
    ...
    ports.conf
    Listen 8080
    000-default.conf:
    <VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    恕我直言,这是一个丑陋的解决方案。我会使用docker image php:7.2-apache并避免所有这些问题。

    关于docker - Docker容器无法与非root用户一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64153984/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com