小知识:详解Docker-compose networks 的例子

今天实验了下 docker 下的网络设置,记录一下过程,以免后面忘记。

(系统:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat docker-compose.yml
version: 3
services:
test1:
image: busybox:latest     # 镜像为 busybox
entrypoint:          # 容器启动后执行 top 命令,使容器没法立即退出
– top
backend:     # 使用指定的网络 backend, 并且设置网络别名为 test1,
aliases:    # 设置网络别名后,可以在其他容器中 ping test1 访问到该容器
– test1
test2:
image: busybox:latest
entrypoint:
– top
networks:
backend:
aliases:
– test2
networks:
backend:

启动

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 的容器名称格式是:<项目名称><服务名称><序号>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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:

启动

?
1
2
3
4
5
6
7
8
9
10
11
12
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上启动就成功了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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”

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

原文链接:https://www.cnblogs.com/klvchen/p/9243312.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:浅谈docker-compose网络设置之networks

2023-4-5 14:56:46

建站知识

小知识:docker compose 服务启动顺序控制的方法

2023-4-5 15:11:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索