docker入门(7)

123 阅读2分钟

本文已参加 [新人创作礼] 活动,一起开启掘金创作之旅。

上篇学习了dockerc compose 的基本概念,并成功安装了docker compose。

docker compose 文件格式

docker-compose.yml文件主要包括指定docker-compose的模式应用版本(version),设计基本的容器
配置服务(services),以及设置容器之间通信的网络模式,基本的YAML文件书写格式如下所示:
    version: 指定版本号
    services:
      容器1:
         容器设置参数
      容器2:
         容器设置参数
    networks:
      网络名:
         网络参数设置
         
         
    简单的docker-compose.yml例子如下
    version: 3.8
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        networks:
          - eth0
    networks:
            eth0:
        name: net1
        

重要的关键字说明

 (1)  version: 用于设置版本号
    其版本号的确定主要参考docker-compose文档Compose file versions and upgrading,
    每一个版本号都给定了相关的Docker-Engine的兼容性说明。值得注意的是,在docker-
    compose.yml文件中的最大版本的确定实际上是跟主机上安装的Docker-Engine的版本具有直接关
    系。在使用时,一定要确定自己主机安装的Docker-Engine的版本。
(2)– services: 容器实体部分
    services部分主要是用于确定集群中每个容器执行的行为,实际上services关于容器设置方面其实
    和Dockerfile文件具有一定的相关性,部分Dockerfile中设置容器的参数也可以放在services字段
    中进行设置。
      容器实体部分常用指令:
            build: 指定构造镜像上下文路径
            image: 指定容器运行的镜像
            endpoint_mode: 访问集群服务的方式
            cap_add(添加),cap_drop(删除)容器拥有的宿主机的内核功能。
            links: 解决容器连接问题
            env_file: 从文件中读取环境变量
            entropoint: 覆盖Dockerfile中的ENTROPOINT
            ports: 建立主机端口到容器端口的映射
            command: 覆盖容器启动的默认命令
            container_name: 指定容器名称
            deploy: 容器部署的配置设置
            tty: true 分配一个伪终端
            volumes: 将主机的数据或者文件挂载到容器里面

(3)– networks: 容器之间通信的网络部分
    networks是主要设置容器之间通信所基于的网络,关于网络的具体配置参数可以参考文献
    Networking in Compose,这里仅仅给出一些主要的配置参数。
    
        name: 网络名
        network_mode: 设置网络模型
        driver: 指定哪种驱动将用于这个网络
        enable_ipv6: 启动ipv6
        ipam(IP Address Management): IP地址管理