docker compose的简单应用

关于docker及docker compose的安装

作为java程序员,第一个docker实例就打算对tomcat下手了。
1.基本理论
先用一张图片简单地表示一下docker实例如何和客户端交互的:

image.png

按照理想状况,假设物理机资源足够充足,那么一个物理机能包含的docker实例数量基本相当于它的端口数。
通过图示,可以看到,一个tomcat docker实例通过映射到物理机的8080端口对外提供服务,另一个实例通过映射到物理机的9080端口对外提供服务。那么客户端分别可以访问 http://{物理机ip}:8080http://{物理机ip}:9080对外提供的服务。
2.实践
在编写具体的docker-compose.yml之前,我们需要先确定一下安装的docker版本:

$  docker version

为什么要先确定docker版本,因为它决定了我们该怎么编写docker-compose.yml,请看下图:

image.png

没错,还是这个链接:https://docs.docker.com/compose/compose-file/compose-versioning/
现在,我们可以根据自己的docker版本开始编写docker-compose.yml:

#版本,和上图的docker版本对应
version: "3.7"
services:
    #docker实例
    tomcat-01:
        #镜像名称
        image: tomcat:jre11
        #实例名称
        container_name: "tomcat-01"
        #映射的端口号
        ports:
            #前面是物理机端口,后面是docker实例端口
            - "8080:8080"
        #将docker实例的文件夹挂载到物理机上
        volumes:
            #前面是物理机的文件夹,后面是docker实例的文件夹路径。映射的其实是tomcat的webapps文件夹。
            - "/home/docker/tomcat01/webapps:/usr/local/tomcat/webapps"
    #配置同上,只是端口和文件夹映射不同
    tomcat-02:
        image: tomcat:jre11
        container_name: "tomcat-02"
        ports:
            - "9080:8080"
        volumes:
            - "/home/docker/tomcat02/webapps:/usr/local/tomcat/webapps"

现在,我们的docker-compose.yml编写好了。我们可以将自己编写好的java项目打成war包放进上述配置文件中指定的物理机文件夹中,其实就是把war包放进了tomcat的webapps中。

在docker-compose.yml所在文件夹执行以下命令:

$  docker-compose build

docker服务器会去远程仓库下载tomcat:jre11镜像,如果本地有这个镜像,就不会去远程下载。

build结束后,我们可以执行命令查看下载的镜像:

$  docker-compose images

也可以直接执行命令直接启动指定的docker实例:

$  docker-compose up

这个命令是前台进程启动docker实例,一旦关闭终端就会导致实例停止服务。所以我们要让docker实例后台运行:

$  docker-compose up -d

启动后,我们可以查看docker实例:

$  docker-compose ps

停止docker实例:

$  docker-compose stop tomcat-01

因为我们这里的例子是tomcat-01,小伙伴根据自己的情况执行相关命令
所以,我们也可以指定启动具体的某一个实例:

$  docker-compose start tomcat-01

小伙伴要注意,如果修改了docker-compose.yml后是需要重新build的,否则有可能不起作用。这个原因先不给大家解释。

其他docker-compose命令请查看:文档
关于docker镜像的查询:docker镜像仓库
国内的docker镜像:阿里云(需要登录) 网易云(需要登录)

总结:以上docker-compose的应用例子足够大家做一个简单的实践。小伙伴要好好利用docker-compose强大的volumes功能,可以利用文件挂载的功能将docker实例的数据文件和相关日志文件也挂载出来,方便数据的持久化和服务日志的查看

你可能感兴趣的:(docker compose的简单应用)