Docker-compose networks 的例子

今天实验了下 docker 下的网络设置,记录一下过程,以免后面忘记。
(系统:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0)

cat docker-compose.yml 
version: '3'
services: 
  test1:
    image: busybox:latest         # 镜像为 busybox
    entrypoint:                   # 容器启动后执行 top 命令,使容器没法立即退出
     - top
    networks:
      backend:          # 使用指定的网络 backend, 并且设置网络别名为 test1,
        aliases:        # 设置网络别名后,可以在其他容器中 ping test1 访问到该容器
          - test1

  test2:
    image: busybox:latest
    entrypoint:
     - top
    networks:
      backend:
        aliases:
          - test2

networks:
  backend:

启动

docker-compose up -d

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4d05ceb2088d        busybox:latest      "top"               5 seconds ago       Up 4 seconds                            ibaboss_test2_1
f4ccafa24664        busybox:latest      "top"               5 seconds ago       Up 4 seconds                            ibaboss_test1_1

docker exec -it 4d05ceb2088d /bin/sh
/ # ping test1
PING test1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.061 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.062 ms

ping ibaboss_test1_1
PING ibaboss_test1_1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.045 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.056 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.061 ms

# 在网络中可以通过 容器名字或者网络的别名 进行通信

Compose 的容器名称格式是:
虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:
container_name: app

cat docker-compose_v1.yml 
version: '3'
services: 
  test1:
    image: busybox:latest
    entrypoint:
     - top
    container_name: test1
    networks:
     - backend

  test2:
    image: busybox:latest
    entrypoint:
     - top
    container_name: test2
    networks:
     - backend

networks:
  backend:

启动

docker-compose -f docker-compose_v1.yml up -d

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
132859fc77c2        busybox:latest      "top"               About a minute ago   Up About a minute                       test2
cd0a78dc9bd4        busybox:latest      "top"               About a minute ago   Up About a minute                       test1

docker exec -it 132859fc77c2 ping test1
PING test1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.070 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.068 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.059 ms

转载于:https://www.cnblogs.com/klvchen/p/9243312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用Docker Compose创建多个容器时,可以使用`docker-compose networks`指定网络,以使容器之间可以相互通信。以下是一个使用`docker-compose networks`的示例: ``` version: '3' services: web: build: . ports: - "5000:5000" networks: - frontend - backend redis: image: "redis:alpine" networks: - backend networks: frontend: backend: ``` 在这个例子中,我们定义了两个服务:`web`和`redis`。`web`服务是一个Web应用程序,使用`Dockerfile`构建,并将端口映射到主机的端口5000。`redis`服务使用Redis的官方镜像,并只连接到后端网络。 最后,我们定义了两个网络:`frontend`和`backend`。`web`服务连接到两个网络,而`redis`服务只连接到`backend`网络。这样,`web`服务可以与`redis`服务通信,而`redis`服务只能与`web`服务通信。 ### 回答2: docker-compose是一个用于定义和管理多个Docker容器的工具。docker-compose.yml是一个配置文件,用于描述容器服务,包括容器运行参数、网络配置、数据卷挂载等。 其中,networks字段用于定义容器服务的网络配置。可以通过名称指定已创建的网络,也可以通过直接定义网络的方式创建新网络。 例如,假设我们有一个简单的web应用,由两个容器组成:一个是前端容器,一个是后端容器。我们希望这两个容器之间可以通过网络进行通信。 下面是一个使用docker-compose networks的示例: ```yaml version: "3.9" services: frontend: image: frontend-image networks: - frontend_network backend: image: backend-image networks: - frontend_network - backend_network networks: frontend_network: backend_network: ``` 在上面的示例中,我们定义了两个网络:frontend_network和backend_network。同时,我们给前端容器和后端容器分别指定了它们需要连接的网络。 当我们使用docker-compose up启动这个应用时,docker-compose会根据这个配置文件来创建并连接相应的网络。 通过这样的网络配置,前端容器和后端容器就可以通过容器名来进行通信,比如前端容器可以通过http://backend:8080来访问后端容器提供的服务。 总结:docker-compose networks可以帮助我们在配置文件中定义容器服务的网络配置,从而实现容器之间的通信。使用网络名称或直接定义网络都可以满足我们对网络的需求。以上是一个使用docker-compose networks的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值