详解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

补充:

docker compose 多容器共用网络问题

前几天计划使用docker compose 编写一个多容器共用一个容器网络,结果总是报错,今天又试了一下才发现是端口绑定的问题造成的,端口只能绑定在产生网卡的容器上,绑定在其它窗口上就会报错,如下代码 mysql服务共用了nginx的网卡,在mysql里使用了port:3306时就会运行失败,将3306移到nginx上启动就成功了。

version: '3.3'
services:
nginx:
image: "lnp_php"
# container_name: "lnmp_nginx"
ports:
- "80:80"
- "443:443"
- "3306:3306"
expose:
- "3306"
volumes:
- /home/www/php:/home/www:rw
# depends_on:
# - mysql
# links:
# - mysql
mysql:
image: "mysql"
# container_name: "lnmp_mysql"
# ports:
# - "3306:3306"
# expose:
# - "3306"
volumes:
- /home/docker/conf/mysql_w:/etc/mysql:rw
environment:
- MYSQL_ROOT_PASSWORD=123456
depends_on:
- nginx
network_mode: "service:nginx"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈docker-compose网络设置之networks

    networks使用方式之官网教程 官网的docker-compose.yml参考文档:Compose file version 3 reference 较为准确的中文翻译版:Compose file version 3 reference networks通常应用于集群服务,从而使得不同的应用程序得以在相同的网络中运行,从而解决网络隔离问题.这种应用在swarm部署中,非常常见.不过,本文并不做讨论. 一般对于集群服务,常常通过docker-compose.yml文档快速编排.部署应用服务.官

  • Docker-compose的安装和设定详细步骤

    Docker-compose的安装和设定详细步骤 docker的1.12版本中,swarm已经合体,docker-engine/swarm/docker-compose的三件套装已经变成两件.后续会不会将docker-compose进一步合体呢,想做的话应该是顺手的事情吧,不想做的话再简单也不会做.考虑到docker-compose可能以独立的方式消失在docker的舞台之后,先写一个安装的文档作纪念吧. 最简单的方式 下载下来二进制的docker-compose,放到你想放的地方,设定可执行的

  • 详解通过docker和docker-compose实现eureka高可用

    最近新项目有使用到springcloud 和docker,关于这两个技术就不分别介绍了,现在分享一下通过docker,docker-compose实现eureka高可用的方案. 1. eureka server项目目录结构: 2. eureka 配置文件配置: server: port: 8900 spring: application: name: eureka-server profiles: active: dev management: security: enabled: false

  • 浅析docker-compose部署mysql无法访问的问题

    什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器. Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用

  • Docker-compose部署gitlab的方法步骤

    Docker-compose部署gitlab 1.安装Docker 安装必要工具 复制代码 代码如下: [root@vm_10_14_centos ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 添加Docker-ce镜像源并安装 [root@vm_10_14_centos ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/li

  • linux使用docker-compose部署软件配置详解

    前言 本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置.下面话不多说了,来一起看看详细的介绍吧 安装docker及docker-compose install docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun install docker-compose sudo curl -L https://github.com/docker/co

  • Docker-Compose的使用示例详解

    Docker Compose是一个用来定义和运行复杂应用的Docker工具.使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作. - github.com/docker/compose docker-compose是用来在Docker中定义和运行复杂应用的工具,比如在一个yum文件里定义多个容器,只用一行命令就可以让一切就绪并运行. 使用docker compose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YU

  • Ubuntu15.10安装docker和docker-compose教程

    1.查看Linux内核版本(3.8以上)和操作系统位数64位 uname -a 结果: Linux jiaxiaoniu-jnq 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 查看Ubuntu版本号命令:cat /etc/issue 2.安装Docker sudo apt-get install docker.io 3.安装后查看Docker版本 sudo do

  • 利用docker-compose搭建AspNetCore开发环境

    使用docker-compose搭建AspNetCore开发环境 1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上监听一个端口就可以了,不污染主机.再组合各Web程序.Redis/Memcached.SqlServerOnLinux. 新建一个目录sites,所有和集群相关的都放在这里,目录结构如下所示 sites     nginx      

  • docker-compose 详解及示例代码

    docker-compose使用示例 利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦.为了能更高效的批量创建容器,docker推出了docker-compose工具,只需要定义一个docker-compose.yml文件即可快速搞定一组容器的创建, mysql: image: daocloud.io/yjmyzz/mysql-osx:latest volumes: - ./m

随机推荐