本文通过发布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]
[root@docker compose]
[root@docker compose]
[root@docker compose]
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或者未正确配置环境变量等因素引起的,可以按照上述步骤进行解决。