什么是Docker Compose
Docker Compose 是Docker 官方编排的项目之一 负责快速的部署分布式应用.
是Docker官方的开源项目,负责实现对Docker 容器集群的快速编排。
Compose
中有两个重要的概念:
- 服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose
项目由 Python 编写,
实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose
来进行编排管理。
Docker Compose 安装与卸载
Compose
可以通过 Python 的包管理工具 pip
进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。
前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。
Docker for Mac
、Docker for Windows
自带 docker-compose
二进制文件,安装 Docker 之后可以直接使用。
1.Linux下安装Docker Compose
github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
------注意 此步骤需要让
/usr/local/bin/docker-compose docker-compose 拥有可执行权限
所以需要执行如下的命令
sudo chmod 777 /usr/local/bin/docker-compose
2.新建一个文件夹
3.创建Docker file 文件:
echo ""> Dockerfile
4.编辑Dockerfile
vim Dockerfile
FROM tomcat:latest ADD . /usr/local/tomcat/webapps/ROOT #WORKDIR /code #RUN pip install redis flask CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
======= 需要了解的是
FROM 这里指的是基础镜像 也就说我们要创建这个容器所需要的镜像 我们这里要跑jsp页面 所以这里镜像用tomcat
ADD 复制文件到此目录下 比如我 /usr/local/tomcat/webapps/ROOT就是将我我的jsp页面复制到我docker 容器里面的tomcat的ROOT页面下,以便后面请求这个页面
#WORKDIR /code 这个可以不写#RUN pip install redis flask
CMD //容器的启动命令 这里启动tomcat 所有执行tomcat bin目录底下的catalina.sh
到这里Dockfile就配置好了,接下我们创建docker-compose.yml文件
vim docker-compose.yml 里面插入如下内容
version: '3' services: web: build: . ports: - "8889:8080" redis: image: "redis:alpine"
这里注意的是ports 其余目前粘贴辅助就好了
ports: - "8889:8080" 前面是自己设定的端口号 不要和自己端口重复就好 后面是映射到宿主机的端口 一般不用修改
然后再新建一个jsp文件
jsp文件自己可以自己写,也可以用我的
Count.jsp
<%@ page contentType="text/html;charset=utf-8"%> <%@ page import="javax.servlet.*" %> <html> <head> <title>网站计数器</title> </head> <body> <%! synchronized void countPeople() { // 串行化计数函数 ServletContext application=((HttpServlet)(this)).getServletContext(); Integer number=(Integer)application.getAttribute("Count"); if(number==null) { // 如果是第1个访问本站 number=new Integer(1); application.setAttribute("Count", number); } else { number=new Integer(number.intValue()+1); application.setAttribute("Count",number); } } %> <% if(session.isNew()) { // 如果是一个新的会话 out.println("是一个新会话!"); countPeople(); } Integer yourNumber=(Integer)application.getAttribute("Count"); out.println(yourNumber); %> <p>欢迎访问本站,你是第 <%=yourNumber %> 个访问用户。 </body> </html>
这样就已经创建我们需要的东西了
接下来我们创建镜像(注意最好在当前目录下 也就是装这些文件的目录)
docker build . -t testjsp:6.6.66 //这里testjsp可以随意命名,后面版本号也一样
镜像创建成功后我们就执行up命令
docker-compose up //这里可以设置一个-d参数让其后台运行
再执行 tail -f /dev/null 确保其可以一直留在后台
到这里就可以输入自己虚拟机或者云主机ip加端口号和xxx.jsp看是否成功了!