学习使用docker来运行常见的web服务器,和一些应用,包括具体的镜像构建方法与使用步骤。
包含两种创建镜像的方法,简单的过程使用Dockerfile,而类似Weblogic这样的复杂应用,使用commit方法来创建镜像。
Apache
官方提供了httpd镜像,下面使用的是手动创建法:
- 创建一个apache_ubuntu目录,在其中创建Dockerfile,run.sh,sample目录(过程略)
- Dockerfile:
FROM ubuntu:dockerfile
#继承自之前创建的ssh镜像
MAINTAINER jason
ENV DEBAIN_FRONTEND noninteractive
#设置环境变量,非交互
RUN apt-get -yq install apache2 tzdata && rm -fr /var/lib/apt/lists/*
RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
#设置时区
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#添加一个示例的web站点,,删掉默认安装在Apache文件夹下面的文件,并将用户添加的示例用软链接到/var/www/html下面
RUN mkdir -p /var/lock/apache2 && mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
COPY sample/ /app
#设置一些相关的变量,在容器启动的时候可以使用-e参数替代
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_SERVERADMIN admin@localhost
ENV APACHE_SERVERNAME localhost
ENV APACHE_SERVERALIAS docker.localhost
ENV APACHE_DOCUMENTROOT /var/www
EXPOSE 80 22
WORKDIR /app
CMD ["/run.sh"]
- 在sample文件夹下创建index.html,写入页面信息:
<!DOCTYPE html>
<html>
<body>
<p>Hello,Docker</p>
</body>
</html>
- run.sh脚本修改为:
#!/bin/bash
/usr/sbin/sshd &
exec apache2 -D FOREGROUND
- 此时目录下的文件结构为:
.
├── Dockerfile
├── run.sh
└── sample
└── index.html
1 directory, 3 files
开始创建镜像:
docker build -t apache:ubuntu .
查看docker镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
apache ubuntu cf4396c07dbd About a minute ago 308MB
- 使用docker run测试镜像,使用docker ps查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1129c640ac06 apache:ubuntu "/run.sh" 5 seconds ago Up 4 seconds 0.0.0.0:32780->22/tcp, 0.0.0.0:32779->80/tcp silly_shockley
可以看到22端口和80端口已经做好映射
- 在本地主机上使用curl抓取页面:
curl 127.0.0.1:32779
Hello,Docker