簡體   English   中英

為什么只有當我在容器的 bash 中使用 go 時才能訪問我的 Apache 默認頁面?

[英]Why can I access my Apache default page ONLY when I go in my container's bash?

首先,我想說我是 Docker 及其周圍所有內容的新手。

我一直想制作一個容器,其中安裝了 Apache、php 和 Firebird。 到目前為止,一切都很好; 一切似乎都正常,當我在我的 Inte.net 搜索欄中輸入我的 ip 地址和:8080時,我可以獲得我的默認頁面。 我首先像這樣啟動我的容器:

docker run -p 8080:80 -d apps

其中“應用程序”是我的容器的名稱。

我用我的 Dockerfile 實現了這個,它看起來像這樣(它可能有點亂,仍在學習好的做法:):

# Download of base image - ubuntu 20.04
FROM ubuntu:20.04

# Updating/upgrading
RUN apt-get update -y && apt-get upgrade -y

# Installing apache2, php and firebird with modules
RUN DEBIAN_FRONTEND="noninteractive" apt-get install apache2 php libapache2-mod-php -y && \
    apt-get install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip -y && \
    DEBIAN_FRONTEND="noninteractive" apt-get install firebird3.0-server -y && apt-get install firebird->

# Start up apache in foreground by default
CMD /usr/sbin/apache2 -D FOREGROUND
ENTRYPOINT service apache2 restart && /bin/bash

# Expose apache
EXPOSE 80

現在,我的想法是將這個容器導出到另一台計算機並嘗試同樣的事情。 我遵循了一些教程,並在新機器上導入了我的容器。 我的問題是,不知何故,我以前使用的命令不起作用; 它向我顯示了這個錯誤:

docker: Error response from daemon: No command specified.
See 'docker run --help'.

這很奇怪,因為它在另一台機器上工作得很好。 我也執行了這個命令,它有效:

docker run -i -t -p 8080:80 apps /bin/bash

這個工作正常,但我不想每次要加載 Apache 頁面時都必須訪問 bash。 如果可以的話,我希望我的容器無需進入我的容器即可運行。

在我看來,這可能是因為我只加載了容器,而不是用於構建它的圖像(也許是一種不好的做法?在谷歌上找不到任何相關信息)。

這是我的設置以防萬一---

在第一台機器上(這是我創建圖像和容器的機器):

  • Ubuntu 20.04 LTS
  • 阿帕奇/2.4.41
  • Docker 19.03.8

在我試圖讓我的容器工作的另一台機器上:

  • Ubuntu 18.04 LTS
  • 阿帕奇/2.4.29
  • Docker 19.03.6

感謝您的耐心和時間!

apps 是你的 docker 圖像,如果你想為你的容器命名,你可以在運行命令中指定 --name 即,

docker run --name container_name -p 8080:80 -d apps

您可以使用sudo docker save -o apps.tar apps創建圖像的 tar 文件,然后更改 tar 文件的根權限sudo chmod 777 apps.tar

將此 tar 文件復制到您要嘗試的其他系統,然后

sudo docker load --input apps.tar

這將加載圖像,然后您可以使用前面的命令啟動容器

docker run -p 8080:80 -d apps

其中“apps”是我的容器的名稱。 <- 這個陳述是不正確的,並且可能是導致您遇到問題的誤解概念。

apps是圖像的名稱,而不是容器的名稱。 在可以運行容器的主機上,您必須使用以下命令從共享的 Dockerfile 構建該映像:

docker build -t apps .

在無法運行容器的主機上復制Dockerfile ,在其中構建映像並再次嘗試運行容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM