docker-compose network 名称定义,docker-compose 加入已经存在的网络

docker-compose 启动的网络名称:

1、没有自定义网络名

 
  1. $ cat docker-compose.yaml
  2. version: '2'
  3.  
  4. services:
  5. zookeeper1:
  6. image: zookeeper
  7. container_name: zookeeper1
  8. environment:
  9. - ZOO_MY_ID=1
  10. - ZOO_SERVERS=server.1=zookeeper1:2888:3888
 

实际使用的网络是:<当前路径名_default>,如果 < 当前路径名 > 太长,会截取前缀部分。

例如当然目录名为 testdocker,那么最终生产的网络名为:testdocker_default

 
  1. $ docker network ls
  2. abf87f64de25 testdocker_default bridge local
 

2、定义后缀

 
  1. $ cat docker-compose.yaml
  2. version: '2'
  3. networks:
  4. byfn:
  5.  
  6. services:
  7. zookeeper1:
  8. image: zookeeper
  9. container_name: zookeeper1
  10. environment:
  11. - ZOO_MY_ID=1
  12. - ZOO_SERVERS=server.1=zookeeper1:2888:3888
  13. networks:
  14. - byfn
 

定义网络名为 byfn,那么最终生产的网络名为:<当前路径名_byfn>。
相对于之前没有定义的时候,把 default 替换成了定义的网络名,同样还是使用路径名作为前缀。

 
  1. $ docker network ls
  2. abf87f64de25 testdocker_byfn bridge local
 

 3、定义前缀

当然使用路径名作为网络名是很不友好的,docker-compose 使用环境变量来取代路径名。

设置环境变量:COMPOSE_PROJECT_NAME

 
  1. $ cat .env
  2. COMPOSE_PROJECT_NAME=aaa
 

这时网络名如下:

 
  1. $ docker network ls
  2. 967ef0d41dd6 aaa_byfn bridge local
 

 所以,docker-compose 的网络名的规则是:<COMPOSE_PROJECT_NAME>_<NETWORKS>

1、如果 NETWORKS 没有定义,那么就是 default。

2、如果 COMPOSE_PROJECT_NAME,那么就是当前路径名 (取前缀)。

 

查看已存在的网络

docker network ls

在需要加入同一局域网的容器 .yml 或 yaml 文件中添加下面的代码:

networks:
  default:
    external:
      name:  NetworkName

在高版本的 compose 中会提示:WARN[0000] network default: network.external.name is deprecated. Please set network.name with external: true

意思是上述方式已经弃用,应使用下述方式

networks:
  default:
    external: true
    name: mq-cluster-test

https://docs.docker.com/reference/dockerfile/#environment-replacement

  • ${variable:-word} 表示如果设置了 variable ,则结果将是该值。如果 variable 未设置,则结果为 word 。
  • ${variable:+word} 表示如果设置了 variable ,则结果为 word ,否则结果为空字符串。

官方说明:https://docs.docker.com/engine/reference/builder/

保留字 作用
FROM 当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 构建镜像时需要运行的指令
EXPOSE 当前容器对外暴露出的端口号
WORKDIR 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝进镜像且 ADD 命令会自动处理 URL 和解压 tar 包
COPY 类似于 ADD,拷贝文件和目录到镜像中
将从构建上下文目录中 <原路径> 的文件 / 目录复制到新的一层的镜像内的 < 目标路径 > 位置
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定一个容器启动时要运行的命令
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker
ENTRYPOINT 指定一个容器启动时要运行的命令
ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及其参数

 

 

 

posted @ 2024-06-28 16:47  CharyGao  阅读(84)  评论(0编辑  收藏  举报