1.apache容器的创建:
1.1 官方提供了hpptd的Apache镜像,作为web的基础镜像
编写Dockerfile文件
FROM httpd:2.4
COPY ./publish-html /usr/local/apache2/htdocs/
创建项目 目录public-html 并在此目录下创建index.html文件
<!DOCTYPE html>
<html>
<body>
<p>Hello, Docker!</p>
</body>
</html>
构建自定义镜像:docker build -t apache2-image
构建完成。使用docker run 指令运行镜像
docker run -it --rm --name apache-container -p 80:80 apache2-image
这样就构建完成 使用docker images就可以看到该镜像了 使用docker ps -a查看运行情况
也可以不创建自定义镜像,直接通过映射目录方式直接运行apahce容器
docer run -it --rm --name my-apache-app -p 80:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4 打开浏览器即可
2.自定义dockerfile文件---apache
2.1创建apache_ubuntu工作目录,在其中创建Dockerfile文件,run.sh文件和sample目录
mkdir apache_ubuntu && cd apache_ubuntu
touch Dockerfile run.sh
mk sample
Dockerfile内容如下:
FROM sshd:Dockerfile
#设置继承自用户创建的sshd镜像
MAINTAINER docker_user (user@docker.com)
#创建者基本信息
#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
#安装
RUN apt-get -yq install apache2&&\
rm -rf /var/lib/apt/lists/*
RUN echo "Asia/Shanghai" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
#添加脚本并设置权限
ADD run.sh /run.sh
RUN chmod 755 /*.sh
#注意这里要改系统的时区设置,因为在web应用中经常会使用到时区这个系统变量,默认的ibuntu会让你的应用程序发生不可思议的效果
#添加一个示例的web站点,删掉默认安装在apache文件夹里面的文件。并将用户添加的示例用软连接链接到/var/html目录下面
RUN mkdir -p /var/lock/apache2 &&mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
COPY sample/ /app
#设置apache相关的一些变量,在容器启动的审核可以使用-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/apache.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
WORKDIR /app
CMD ["/run.sh"]
在sample目录下创建index.html文件 内容参考上面 run.sh 内容如下:
$cat run.sh
#!/bin/bash
#若要启动ssh需要下面的命令
/usr/sbin/sshd &
exec apache2 -D FOREGROUND
使用docker build -t apache:ubuntu创建镜像 docker run -d -P(-p 1002:22 -p 8000:80) apache:ubuntu启动镜像 ,启动后会发现 镜像继承了父类镜像的端口号 但是没有启动父类镜像(在未加入ssh启动命令前)
映射本地目录到容器内的目录替代显示内容
docker run - i -d -p 80:80 -p 103:22 -e APACHE_SERVERNAME=test -v 'pwd' /www:/var/www:ro apache:ubuntu
在当前目录下创建www目录。并放上自定义的页面index..html 内容自定义。