Docker中每个容器都有自己单独的空间,所以数据卷的容器部分可以写相同,数据卷的宿主机部分需要写单独的,其他的部分只要容器名和端口区分开来就行,比如两个tomcat服务的Docker-compose服务的配置文件如下:

宿主机8081端口

# 宿主机8081
version: '3.3'
services:
  tomcat2:         #这里注意区分
      restart: always
      image: daocloud.io/library/tomcat:8.5.15-jre8
      container_name: tomcat2    #这里注意区分
      ports:
          - 8081:8080      #注意这里的端口是8081
      environment:
          TZ: Asia/Shanghai
      #这里注意宿主机的位置要区分开来,这里8081端口对应的宿主机挂载点是Tomcat2目录下
      #容器部分的位置的值是相同的       
      volumes:
          - /d/vm/DockerFile/Tomcat2/webapps:/usr/local/tomcat/webapps
          - /d/vm/DockerFile/Tomcat2/logs:/usr/local/tomcat/logs

宿主机8080端口

#基本注意点和上面相同
version: '3.3'
services:
  tomcat:
      restart: always
      image: daocloud.io/library/tomcat:8.5.15-jre8
      container_name: tomcat
      ports:
          - 8080:8080
      environment:
          TZ: Asia/Shanghai       #指定时区
      volumes:
          - /d/vm/DockerFile/Tomcat/webapps:/usr/local/tomcat/webapps
          - /d/vm/DockerFile/Tomcat/logs:/usr/local/tomcat/logs

然后分别运行这两个Docker-compose文件,在宿主机相应的位置添加一两个测试网页,如果没有问题的话,可以看到如下结果

docker compose 一个镜像多个容器实例 docker一个镜像多个服务_数据

docker compose 一个镜像多个容器实例 docker一个镜像多个服务_docker_02

    至此使用docker-compose用一个镜像创建两个不同端口的tomcat服务已经测试成功