如何设置一个 Apache Docker 容器

如果您对Docker和容器还不熟悉,那么设置Apache Docker容器是一个很好的起点。由于其轻量级技术和安全性,使用Docker创建应用程序具有巨大的优势。

在本教程中,您将学会如何在Ubuntu上设置Apache Docker容器。利用本教程,学会使用Docker并获得一个Apache web服务器!

先决条件

如果您想一步一步地跟着进行,请确保您具有以下条件,并在本教程中安装了Ubuntu 14.04.4 LTS或更高版本的机器上安装了Docker。本教程使用Ubuntu 18.04.5 LTS,带有Docker v19.03.8和公共IP地址13.213.48.113。

设置Apache Docker容器

假设您已经安装了Docker,让我们首先设置Apache容器。稍后,您将学会如何启动它。

快速启动Apache Docker容器的最简单方法之一是从官方Docker注册表Docker Hub下载现有的容器映像。在本例中,您将下载并运行一个名为Apache的Docker容器。

使用几个Docker命令,您将在短时间内运行一个Apache实例。要做到这一点,请按照以下步骤进行。

注意:本教程不涵盖深入运行Docker命令。要了解更多关于Docker命令的信息,请访问Docker命令行文档页面。

1. 在您的Ubuntu机器上打开终端。

2. 通过运行下面的docker pull命令,下载包含Apache的Docker镜像,名为httpd。此命令将从Docker注册表下载或拉取Apache镜像,如下所示。

# 从docker注册表将Docker镜像拉取到本地计算机。
docker pull httpd

下面的截图显示了从Docker Hub拉取镜像时的预期结果。

Pulling the Apache image from Docker Hub

3. 接下来,通过运行下面的docker images命令确认您已经下载了镜像,以列出计算机上所有可用的镜像。

# 检查docker镜像
docker images

如下所示,您现在有一个Docker镜像,这是您从Docker Hub下载的镜像。

Checking the Docker images

使用Docker命令运行Apache容器。

在前面的部分,您从Docker Hub下载了Docker镜像。现在,您已准备好从该镜像创建一个容器。要运行Apache容器,您需要运行以下Docker命令:

1. 调用docker run命令,基于您下载的Apache Docker镜像创建一个新的容器。

# 运行一个名为docker-apache的新docker容器(--name)
# 将本地计算机的端口80映射到容器的端口80(-p 80:80)
# 在后台模式下运行(-d)
# 使用Apache镜像
docker run -d --name docker-apache -p 80:80 -d httpd

然后docker run命令会返回您刚刚创建的容器的唯一容器ID。如果您希望删除或移除该容器,将该容器ID保存在下面的突出显示框中以备将来使用。

Running a new Docker container using an Apache image

2. 一旦Apache容器正在运行,请通过在Web浏览器中导航到公共IP地址:80来验证您是否可以访问Apache Web界面。如果您能够看到与下面相同的消息,那么您已成功启动了Apache Docker容器。

确保Ubuntu 14.04.4 LTS机器在安全组中允许了入站端口80。

Accessing the Apach

3. 最后,如果您不再需要运行容器,请通过运行以下docker stop命令停止容器。此命令将优雅地停止容器实例。

# 使用容器ID aaaee64a4512停止容器,请确保将容器ID值更改为您自己的值。
# 注意:指定容器ID的前12个字符就足够了。
docker stop aaaee64a4512

或者,您还可以通过在docker stop命令中指定其名称(docker stop docker-apache)来停止正在运行的容器。

使用Docker文件运行Apache Docker容器

在前一部分中,您了解了如何通过运行默认的httpd Docker镜像启动Apache Docker容器。如果您需要更新基础镜像以显示不同内容或在不同端口上公开它,该怎么办?

使用Docker文件部署容器可以在测试相同设置在不同操作系统上时省略手动创建镜像的步骤。Docker文件方法是Docker镜像的自动化脚本。

让我们创建一个Docker文件并从中运行一个容器。

1. 创建一个名为~/apache-server-docker-demo的文件夹,然后将工作目录更改为该文件夹(cd)。

mkdir ~/apache-server-docker-demo
cd ~/apache-server-docker-demo

2. 创建另一个文件,复制/粘贴以下配置,并将文件保存为位于~/apache-server-docker-demo目录中的index.html。index.html文件是一个HTML页面,一旦容器启动,将显示本教程将如何在Docker中运行Apache容器的内容,您将在课程后面看到。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>This tutorial will teach how to Run Apache container in docker .</title>
</head>
<body>
    <h1>This tutorial will teach how to Run Apache container in docker , lets GO!</h1>
</body>
</html>

3. 创建另一个文件,复制/粘贴以下配置,并将文件保存为位于~/apache-server-docker-demo目录中的Docker文件。完成后,Docker将使用此DockerFile运行所有必要的命令来构建新的Docker镜像,这些命令基于任何基础镜像。

下面的DockerFile包含了构建Apache容器的各种步骤/指令:

  • Maintainer Maintainer指令提供了管理此文件的作者的信息。
  • FROM FROM指令初始化一个新的构建阶段,并为后续指令设置基础镜像。在下面的代码片段中,centos:7是基础镜像。
  • COPY COPY命令将文件从主机(Docker主机)复制到容器中。您之前在Docker主机上创建的index.html将被复制到容器的/var/www/html目录中。
  • EXPOSEEXPOSE指令通知 Docker 在运行时监听指定的网络端口。Apache webserver 默认在 Port 80 上公开。
# Dockerfile 指令,在基础镜像(httpd)上创建新镜像
FROM httpd:2.4
MAINTAINER [email protected]
COPY index.html /var/www/html/
EXPOSE 80

4. 接下来,通过运行 tree 命令验证文件夹中的所有必需文件。

Verify all the required files

5. 接下来,通过运行 docker build 命令构建镜像。 t 标志用于给镜像 apache-server 打标签,版本为 v1. 表示当前工作目录。

# 构建 Docker 镜像
sudo docker build  -t apache-server:v1 .
build the image by running the docker build command

当 Docker 构建完成时,它会返回各种属性。你会看到其中一个属性是 REPOSITORY。REPOSITORY 名称是 apache-server,镜像带有版本 v1,如下所示。

Repository Attributes

6. 最后,通过运行 docker run 命令运行使用新构建的镜像的 Apache 容器。

p 标志将容器的端口发布到主机,即 80:80-it 标志指示 Docker 分配一个连接到容器的标准输入的 伪终端

# 运行 Apache 容器,使用新构建的镜像
docker run -it -p 80:80 apache-server:v1

最后,通过在浏览器中导航至公共IP地址:80,验证是否可以访问Apache Web界面。您将在Web界面上看到此消息,因为您创建了index.html文件,并且Docker在启动时将其复制到容器中。

verify if you can access the Apache web interface

结论

本教程旨在帮助您完成使用Docker镜像设置Apache Docker容器的过程。您学会了如何使用Docker文件启动Apache容器,您可以编辑和构建自定义容器。

那么,在Apache服务器Docker镜像上您打算构建什么?

Source:
https://adamtheautomator.com/apache-docker/