本教程将集中安装Apache服务如何构建基于Ubuntu的自定义图像Docker窗。 整个过程中会使用Dockerfile自动化。
使用Dockerfile构建Docker镜像 - 第3部分
Docker窗图像可以自动生成表格文本文件,命名为Dockerfiles。 Docker文件包含用于创建和配置Docker镜像的分步指令或命令。
要求
基本上,Docker文件包含各种指令,以便根据您的要求构建和配置特定容器。 以下说明是最常用的,其中一些是强制性的:
-
FROM
=强制作为一个Docker文件第一条指令。 指示Docker拉出正在构建新图像的基础映像。 使用标记指定要建立的确切图片:
Ex: FROM ubuntu:14.04
-
MAINTAINER
构建图像=作者 -
RUN
=该指令可以在多行使用,Docker窗图像已被创建后运行的任何命令。 -
CMD
=当Docker形象开始运行的任何命令。 在Dockerfile中只使用一个CMD指令。 -
ENTRYPOINT
=相同CMD但用作用于图像的主指令。 -
EXPOSE
=指示容器中运行时的网络端口监听。 默认情况下,不能从主机访问容器端口。 -
ENV
=设置容器环境变量。 -
ADD
=复制资源(文件,目录或文件从URL中)。
第1步:创建或编写Dockerfile存储库
1.首先,让我们创建某种Dockerfile库,以重用在今后的文件来创建其他图像。 做一个空目录某处/var
分区,我们将创建一个将用于建立新Docker窗图像的说明文件。
# mkdir -p /var/docker/ubuntu/apache # touch /var/docker/ubuntu/apache/Dockerfile
创建Dockerfile存储库
2.接下来,开始编辑与下面的说明文件:
# vi /var/docker/ubuntu/apache/Dockerfile
Dokerfile摘录:
FROM ubuntu MAINTAINER your_name <user@domain.tld> RUN apt-get -y install apache2 RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html EXPOSE 80 CMD /usr/sbin/apache2ctl -D FOREGROUND
Dockerfile存储库
现在,让我们通过文件说明:
第一行告诉我们,我们是从一个Ubuntu形象建设。 如果没有标签被提交,说14点10分为例,从Docker窗中心的最新形象时使用。
在第二行中,我们已经添加了图像创建者的姓名和电子邮件 。 接下来的两线运行将在容器构建图像时,将安装Apache守护进程和echo一些文本默认的Apache网页执行。
该EXPOSE线将指示Docker窗容器上监听80端口,但端口将不提供给外界。 最后一行指示容器在容器启动后在前台运行Apache服务。
3.我们需要做的最后一件事是发出以下命令,该命令将在本地创建一个新的形象Docker命名,开始创建映像ubuntu-apache
基础上,Dockerfile之前创建的,如下面的例子:
# docker build -t ubuntu-apache /var/docker/ubuntu/apache/
创建Docker镜像
图像已经被创建Docker 4.之后,您可以列出所有可用的图像,并发出以下命令找出你的形象:
# docker images
列出所有Docker镜像
第2步:运行容器并从LAN访问Apache
5.为了不断(背景)运行容器,并在你的局域网主机或其它远程计算机访问容器公开服务(端口),您的主机终端提示符下运行下面的命令:
# docker run -d -p 81:80 ubuntu-apache
运行Docker容器图像
在这里, -d
选项运行ubuntu-apache
背景容器(作为守护程序)和-p
选项容器港口80映射到本地主机端口81。 外LAN访问Apache服务只能通过端口81到达。
netstat命令会给你什么端口的主机监听的想法。
容器已经启动后,您还可以运行docker ps
命令查看正在运行的容器的状态。
6.网页可以使用curl工具对你的机器的IP地址,本地主机或搬运工网接口上的端口81使用命令行您的主机上显示ip命令行来显示网络接口的IP地址。
# ip addr [List nework interfaces] # curl ip-address:81 [System Docker IP Address] # curl localhost:81 [Localhost]
检查Docker网络接口和IP地址
检查Docker Apache页面
7.从您的网络访问该网页的容器,在远程位置打开一个浏览器,并使用HTTP协议,其中容器正在运行的机器的IP地址,然后是81端口下面的图片上所示。
http://ip-address:81
检查Docker容器Apache页面
8.要得到什么进程容器发出以下命令中运行的内部:
# docker ps # docker top <name or ID of the container>
检查运行Docker进程
9.要停止容器问题docker stop
命令,随后容器ID或名称。
# docker stop <name or ID of the container> # docker ps
10.如果你想为容器使用指定的描述性名称--name
选项,如图下面的例子:
# docker run --name my-www -d -p 81:80 ubuntu-apache # docker ps
给Docker容器名称
现在,您只能通过使用分配的名称来引用容器进行操作(start,stop,top,stats等)。
# docker stats my-www
监控Docker容器利用率
第3步:为Docker容器创建一个系统级配置文件
11.在CentOS / RHEL 7,您可以创建一个systemd配置文件和管理,你通常对任何其他本地服务做的容器。
例如,新建一个名为systemd文件,比方说, apache-docker.service
使用以下命令:
# vi /etc/systemd/system/apache-docker.service
Apache的docker.service文件摘录:
[Unit] Description=apache container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a my-www ExecStop=/usr/bin/docker stop -t 2 my-www [Install] WantedBy=local.target
12.编辑完文件后,将其关闭,重新加载systemd守护程序,以反映变化,通过发出以下命令启动容器:
# systemctl daemon-reload # systemctl start apache-docker.service # systemctl status apache-docker.service
这只是你可以用一个简单的Dockerfile做一个简单的例子,但你可以预先建立一些你能火起来,在短短的以最少的资源和精力秒钟内相当复杂的应用程序。