gpt4 book ai didi

ubuntu - Docker Apache Container 在 Ubuntu 18.04 上立即存在(从 Docker 文件构建)

转载 作者:行者123 更新时间:2023-12-04 19:09:54 24 4
gpt4 key购买 nike

我创建了一个 docker 文件,当我构建和运行容器时,容器立即退出。

我使用 Ubuntu 18.04 作为安装 docker 的基本操作系统。

我的 docker 文件包含以下内容

FROM ubuntu <br>
RUN apt-get update <br>
RUN apt-get install apache2 -y <br>
RUN apt-get install apache2-utils -y <br>
RUN apt-get clean <br>
RUN rm -rf /var/lib/apt/lists/* <br>
EXPOSE 80 <br>
ENTRYPOINT ["apache2ctl"] <br>
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"] <br>

用于构建镜像的命令是: sudo docker build -t myimage .

运行容器的命令用户是:
sudo docker run -it -p 80:80 myimage

跟随输出
sudo docker ps -a <br>

CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES 6b1891ac8195 myimage "apache2ctl /usr/sbi…"
15 minutes ago Exited (1) 15 minutes ago
infallible_williamson
dc3cc1328508 5b5570dec3a9
"tail -f /dev/null /…" 17 minutes ago Exited (1) 17 minutes ago stoic_ganguly
a67f5cb9f080 53a1c1ddc4fc "tail -f /dev/null /…" 18 minutes ago Exited (1) 18 minutes ago
vibrant_grothendieck
07fa216c6c00 b5d19c3240f7
"apache2ctl /usr/sbi…" 31 minutes ago Exited (1) 31 minutes ago keen_blackburn
71d686cb0b8e 568c96482f1c
"apache2ctl /bin/sh …" 39 minutes ago Exited (1) 38 minutes ago happy_saha
11e0abe7c2ec d056b6f1d824 "apache2ctl /bin/sh …" 40 minutes ago Exited (1) 40 minutes ago
vibrant_kare
17ed24e8eef4 d056b6f1d824 "apache2ctl /bin/sh …" 3 hours ago Exited (1) 3 hours ago
gallant_dijkstra
b1c6d9bf2765 d056b6f1d824
"apache2ctl /bin/sh …" 3 hours ago Exited (1) 3 hours ago
elated_joliot



请帮忙。

最佳答案

在你的 Dockerfile 中需要纠正的地方很少

Use specific versions for your base images


FROM ubuntu:18.04 将特定版本添加到您的 FROM图片 ,这有助于理解 这个 Docker 镜像是用什么版本的基础镜像 (Ubuntu:18.04) 构建的 .

Combine multiple RUN commands



合并多个 RUN单个 RUN 的命令命令 ,如果可能的话,有助于减少 docker 层的数量,从而减少图像的大小。

检查 Dockerfile 最佳实践 - https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run

改变这个从
RUN apt-get update 
RUN apt-get install apache2 -y
RUN apt-get install apache2-utils -y


RUN apt-get update && \
apt-get install -y apache2 apache2-utils && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

CMD correction



正如你已经提到的 apache2ctl在您的 ENTRYPOINT 无需在您的CMD 中再次提及 .您的 命令被解释为 apache2ctl /usr/sbin/apache2ctl -DFOREGROUND .因此 docker run命令失败。

所以这就是你的 Dockerfile被修改:
$ cat Dockerfile 
FROM ubuntu:18.04
RUN apt-get update && \
apt-get install -y apache2 apache2-utils && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
EXPOSE 80
ENTRYPOINT ["apache2ctl"]
CMD ["-DFOREGROUND"]


现在 构建 Docker 镜像 正如你所做的那样。
$ docker build -t myimage:1.0 .
Sending build context to Docker daemon 38.3MB
Step 1/5 : FROM ubuntu:18.04
---> cf0f3ca922e0
Step 2/5 : RUN apt-get update && apt-get install -y apache2 apache2-utils && apt-get clean && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 2f47b3a5e735
Step 3/5 : EXPOSE 80
---> Using cache
---> 5b395b19a0dc
Step 4/5 : ENTRYPOINT ["apache2ctl"]
---> Using cache
---> be1afc8d76c3
Step 5/5 : CMD ["-DFOREGROUND"]
---> Running in 3d0d78c566e2
Removing intermediate container 3d0d78c566e2
---> 00167996f7f3
Successfully built 00167996f7f3
Successfully tagged myimage:1.0

以分离模式运行容器 , -d ,作为在后台运行进程。
$ docker run -d -p 80:80 myimage:1.0
eccb77059f9ce8628e7a47d64adb9d20a3ca6cb3cecce06935b46eb13652b992


$ docker ps | grep eccb77
eccb77059f9c myimage:1.0 "apache2ctl -DFOREGR…" 14 seconds ago Up 12 seconds 0.0.0.0:80->80/tcp charming_payne

$ docker ps | grep eccb77
eccb77059f9c myimage:1.0 "apache2ctl -DFOREGR…" 27 seconds ago Up 25 seconds 0.0.0.0:80->80/tcp charming_payne

$ docker ps | grep eccb77
eccb77059f9c myimage:1.0 "apache2ctl -DFOREGR…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp charming_payne

使用 localhost 和端口 80 访问 URL
$ curl http://localhost:80

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
Modified from the Debian original for Ubuntu
Last updated: 2016-11-16
See: https://launchpad.net/bugs/1288690
-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache2 Ubuntu Default Page: It works</title>
<style type="text/css" media="screen">
* {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;

也来自浏览器

enter image description here

关于ubuntu - Docker Apache Container 在 Ubuntu 18.04 上立即存在(从 Docker 文件构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58834494/

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