【发布时间】:2020-12-09 07:04:03
【问题描述】:
我必须创建一个 centos 基础 Docker 映像,并且需要在其中安装 apache。我创建了一个包含以下内容的 docker 文件:
FROM centos:7
Run yum update && yum install httpd httpd-tools -y
需要做的:当我运行容器时,它应该指向浏览器,比如 localhost:8090。我可以获取执行相同操作的步骤吗?
有人可以帮忙吗?
【问题讨论】:
我必须创建一个 centos 基础 Docker 映像,并且需要在其中安装 apache。我创建了一个包含以下内容的 docker 文件:
FROM centos:7
Run yum update && yum install httpd httpd-tools -y
需要做的:当我运行容器时,它应该指向浏览器,比如 localhost:8090。我可以获取执行相同操作的步骤吗?
有人可以帮忙吗?
【问题讨论】:
首先我们需要在 Dockerfile 中调整一些东西:
FROM centos:7
RUN yum update -y && yum install httpd httpd-tools -y
EXPOSE 80
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
Expose 指令将告诉 Docker 引擎 80 应该可用于发布到主机。由于服务不在容器中运行,仅在应用程序中运行,我们将在前台手动启动 httpd (/usr/sbin/httpd -D FOREGROUND)。
然后在与docker文件相同的目录下,发出docker build
docker build -t "centosapache:0.1" .
你的 docker run 命令看起来像
docker run -d -p 8090:80 -v /home/user/web:/var/www/html centosapache:0.1
-d 将其初始化为分离或守护程序模式 -p 将主机的 8090 端口映射到容器的 80 端口 -v 将你主机的目录 /home/user/web 映射到容器的 /var/www/html (可选,但对 PHP 很好)
然后我们只需指定要运行的映像和版本。由于 docker 文件有一个默认的启动 apache 的 CMD,所以你不需要覆盖它。
【讨论】:
ERROR: Service 'server' failed to build: The command '/bin/sh -c yum update && yum install httpd httpd-tools -y' returned a non-zero code: 1 但是,通过将-y 或--assumeyes 添加到yum update,它就像一个魅力.谢谢,@Dockstar。