本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布、网络、共享分区以及信息隔离与连通方面的工作:

1. 新建docker-compose.yml,放在任意目录下

version: '2'
services:
  App1:
    build: /local/docker/dockerApp1
    image:studyapp1:0.0.1
    restart: always
    ports:
     - "8030:8080"
    volumes:
     - /local/docker/log:/docker/logs
    container_name: zcy1
    networks:
          - "netName1"
  App2:
      build: /local/docker/dockerApp1
      image: studyapp1:0.0.1
      restart: always
      ports:
       - "8031:8080"
      volumes:
       - /local/docker/log:/docker/logs
      container_name: zcy2
      networks:
            - "netName1"
  App3:
      build: /local/docker/dockerApp1
      image: studyapp1:0.0.1
      restart: always
      ports:
       - "8032:8080"
      volumes:
       - /local/docker/log:/docker/logs
      container_name: zcy3
      networks:
            - "netName2"
networks:
  netName1:
    driver: bridge
  netName2:
      driver: bridge

2. 后台启动,在compose文件的目录下面执行:

docker-compose up -d

3. 查看容器运行状态

docker-compose ps

4. 其他命令:

[root@docker compose]# docker-compose restart #重启所有容器
[root@docker compose]# docker-compose restart App1  #重启App1
[root@docker compose]# docker-compose stop #停止所有容器
[root@docker compose]# docker-compose stop App1  #停止App1
5.验证网络隔离:

a.到App1 ping App2   是通的,但是App1 ping App3 不通

执行: docker-compose exec App1 bash 进入服务App1中,ping 的方式可以连接

此方式可以微服务之间调用,就用服务名称作为ip

curl App2:8080/xxx 是可以访问到App2 服务的

volumes:
       - /local/docker/log:/docker/logs
挂载后,3个服务里面的日志都打印到宿主机 /local/docker/log 里面

7. 将微服务不打入镜像的方法

将打包好的微服务,放在宿主机的目录下,通过挂载的方式到容器中:

app4:
image: public-docker-virtual.artnj.zte.com.cn/daas/jdk8:0.0.1
restart: always
ports:
- "8033:8080"
volumes:
- /local/daasdocker/log:/daas/logs
- /local/daasdocker/app:/daas/app
command:
- java
- -jar
-  /daas/app/study.jar
- --server.port=8080

本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布、网络、共享分区以及信息隔离与连通方面的工作: 1. 新建docker-compose.yml,放在任意目录下version: '2'services: App1: build: /local/docker/dockerApp1 image:studyapp1:0.0.1 restar... kong :API网关 kong-migration :自我终止的容器,用于仅迁移Kong的数据库。 kong-database :Postgres数据库(Kong支持Postgres和Cassandra) 仪表板:Kong GUI 这是每个服务之间的依赖关系方向: “ kong-database”是唯一依赖于其他服务的服务 “ kong”和“ kong-migration”将取决于“ kong-database” “仪表盘”取决于“ kong” 我们将“ kong”服务的重启策略设置为“ always”,因为该服务取决于由“ kong-migration”处理的“ kong-database”的迁移状态,这是一个自终止服务,在执行完成后将被删除,所
第一个 docker-compose 文件: docker-compose 1.yml 其中指定了一个名称为service-net的 网络 ,所用的ip段为172.19.0.0/16 同时给服务service2分配了固定的ip为172.19.0.21 version: "2" networks: service-net: name: service-net ipam: config: - subnet: 172.19.0.0/16 #用于指定 网络 ip段
在工作中我们可能需要数据库和api接口分开部署的情况,如果都用 docker-compose 部署的话, 在有的操作系统中可能无法使用(ip+端口)连接数据库,必须使用服务名称去连接。 这时我们就需要让这两个 docker-compose 启动的服务 共享 网络 ,这样就可以相互调用服务了 数据库的 docker-compose 文件 我们可以使用 docker network create my_net 创建一个 网络 ,之后每个 docker-compose .yml引用即可 也可以先启动数据库服务,最后api服务的docke
当一个 docker-compose 文件运行的时候,同属一个文件内的所有容器之间会建立一个default的 网络 ,这些容器之间的访问、通讯则都在这个默认的 网络 下进行。但是通常我们会根据构建更新的频率、业务领域等条件划分不同的 docker-compose ,而且这些不同的 docker-compose 的容器之间默认是不支持互相通讯的。那么就需要构建一些公共的 网络 ,然后这些所有的需要相互通讯的容器都加入这个公共 网络 即可完成通讯。 构建公共 网络 docker creae network my_net[自定义名称]
开发过程中偶尔会遇到不同的 docker-compose 之前通信,例如1台redis(A)、1台 应用 服务(B)分别在不同的 网络 中即net1_net1、net2_net2中,当B想订阅A时会发现 网络 不通 1. 网络 net1_net1(A) 目录 net1/ docker-compose .yml docker-compose .yml version: '3.5' # 网络 配置 networks: net1: driver: bridge net2_net2: external: tr.
Nacos注册中心简介   在 微服务 中,首先需要面对的问题就是如何查找服务(软件即服务),其次,就是如何在不同的服务之间进行通信?如何更好更方便的管理 应用 中的每一个服务,如何建立各个服务之间联系的纽带,由此注册中心诞生(例如淘宝网卖家提供服务,买家调用服务)。   市面上常用注册中心有Zookeeper(雅虎Apache),Eureka(Netfix),Nacos(Alibaba),Consul(Google),那他们分别都有什么特点,我们如何进行选型呢?我们主要从社区活跃度,稳定性,功能,性能等
准备做前后端分离,前端,后端的 docker-compose 都弄好了 后端https://blog.csdn.net/tang05709/article/details/86761254 前端https://blog.csdn.net/tang05709/article/details/88394634 但他们没有通信,所以使用127.0.0.1去请求数据会报错 我使用的是network...
<h3>回答1:</h3><br/>这个错误提示是因为系统中没有安装 docker-compose 命令,需要先安装 docker-compose 才能使用它。可以通过以下命令安装 docker-compose : 1. 在终端中输入以下命令,下载 docker-compose 二进制文件: sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/ docker-compose -$(uname -s)-$(uname -m)" -o /usr/local/bin/ docker-compose 2. 授权 docker-compose 二进制文件: sudo chmod +x /usr/local/bin/ docker-compose 3. 验证 docker-compose 是否安装成功: docker-compose --version 如果显示版本号,则说明 docker-compose 已经安装成功。 <h3>回答2:</h3><br/> Docker-Compose 是一个使用Docker来管理多个容器的工具。使用保存在 docker-compose .yml文件中的配置,可以轻松地创建、启动和停止多个Docker容器。当您在执行 Docker-Compose 命令时出现错误“bash: docker-compose : 未找到命令...”,正常情况下是因为 Docker-Compose 未正确安装或安装位置未正确配置。下面是解决此问题的一些步骤: 1. 确认您已正确安装 Docker-Compose :在终端中输入命令“ docker-compose ”并按下Enter键。如果系统返回 Docker-Compose 的版本信息,则表明已经成功安装。 2. 如果您没有安装 Docker-Compose ,则从Docker官网下载并安装。 3. 确保 docker-compose 在PATH环境变量中被发现。如果它不在PATH中,则需要添加到PATH中。 4. 您可以尝试在终端中重新加载bash配置文件,通常是.bashrc或.bashprofile文件。 这些步骤应该可以解决“bash: docker-compose :未找到命令”错误。如果您仍然遇到问题,请参考 Docker-Compose 的官方文档或在Docker社群中寻求帮助。 <h3>回答3:</h3><br/>“bash docker-compose : 未找到命令…”,这个错误信息可能是因为系统找不到Docker Compose这个命令引起的。Docker Compose是Docker开发的一个用于管理多个Docker 容器的工具,可以使用它通过单个YAML文件来配置多个服务,并可以通过一个指令启动、停止等多个容器。常见的也会使用“-d”(detach)参数来保证容器在后台运行。 如果你遇到了这种错误,则需要检查你的系统中是否安装了Docker Compose,并且正确地配置了环境变量。以下是解决这个问题可能的一些解决方案: 1.检查Docker Compose是否已经安装。可以使用以下命令: docker-compose --version 如果安装过,应该会显示出版本信息。如果没有安装,则需要在系统上安装Docker Compose。 2.确认Docker Compose的路径是否正确。 如果已经安装Docker Compose,但是系统仍然无法找到该命令,这可能是因为Docker Compose的路径没有正确设置。在~/.bashrc或者~/.bash_profile中添加以下行,即可设置一个正确的路径: export PATH=$PATH:/usr/local/bin/ docker-compose 3.检查系统的版本是否支持Docker Compose。 如果出现问题,可以尝试升级操作系统或者重装Docker Compose,以解决这些问题。 总之,出现“bash docker-compose : 未找到命令…”这个错误,可能是由于系统未安装Docker Compose或者未正确配置环境变量等因素引起的,可以按照上述步骤进行解决。