docker-web服务与应用的定制

学习使用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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值