详解Docker-compose networks 的例子
今天实验了下docker下的网络设置,记录一下过程,以免后面忘记。
(系统:Centos7.4,docker版本:18.03.1-ce,docker-composeversion1.18.0)
catdocker-compose.yml version:'3' services: test1: image:busybox:latest#镜像为busybox entrypoint:#容器启动后执行top命令,使容器没法立即退出 -top networks: backend:#使用指定的网络backend,并且设置网络别名为test1, aliases:#设置网络别名后,可以在其他容器中pingtest1访问到该容器 -test1 test2: image:busybox:latest entrypoint: -top networks: backend: aliases: -test2 networks: backend:
启动
docker-composeup-d dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 4d05ceb2088dbusybox:latest"top"5secondsagoUp4secondsibaboss_test2_1 f4ccafa24664busybox:latest"top"5secondsagoUp4secondsibaboss_test1_1 dockerexec-it4d05ceb2088d/bin/sh /#pingtest1 PINGtest1(172.19.0.2):56databytes 64bytesfrom172.19.0.2:seq=0ttl=64time=0.061ms 64bytesfrom172.19.0.2:seq=1ttl=64time=0.062ms pingibaboss_test1_1 PINGibaboss_test1_1(172.19.0.2):56databytes 64bytesfrom172.19.0.2:seq=0ttl=64time=0.045ms 64bytesfrom172.19.0.2:seq=1ttl=64time=0.056ms 64bytesfrom172.19.0.2:seq=2ttl=64time=0.061ms #在网络中可以通过容器名字或者网络的别名进行通信
Compose的容器名称格式是:<项目名称><服务名称><序号>
虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:
container_name:app catdocker-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-fdocker-compose_v1.ymlup-d dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 132859fc77c2busybox:latest"top"AboutaminuteagoUpAboutaminutetest2 cd0a78dc9bd4busybox:latest"top"AboutaminuteagoUpAboutaminutetest1 dockerexec-it132859fc77c2pingtest1 PINGtest1(172.19.0.2):56databytes 64bytesfrom172.19.0.2:seq=0ttl=64time=0.070ms 64bytesfrom172.19.0.2:seq=1ttl=64time=0.068ms 64bytesfrom172.19.0.2:seq=2ttl=64time=0.059ms
补充:
dockercompose多容器共用网络问题
前几天计划使用dockercompose编写一个多容器共用一个容器网络,结果总是报错,今天又试了一下才发现是端口绑定的问题造成的,端口只能绑定在产生网卡的容器上,绑定在其它窗口上就会报错,如下代码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"
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。