dockercompose(两个dockercompose)
本篇文章给大家谈谈dockercompose,以及两个dockercompose对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、docker compose 内容指导
- 2、Docker Compose 入门(V3)
- 3、docker-compose安装
- 4、Docker的那些事儿—什么是docker compose?
- 5、docker与docker-compose介绍,对比与使用
- 6、Docker从入门到精通之Docker Compose
docker compose 内容指导
由于之前写了一篇文章,主要是关于docker 基础的东西。这里说一下,容器编排的事情,因为后面 k8s 会用到这个。
参考 下面这个, 文档特别清晰
Docker Compose gitbook
注意 docker compose 有两个版本 一个是 python 编写的 ( docker-compose ),一个是 go 重写的 叫 compose v2 ( docker compose )命令几乎没有区别,只是 go 的少了 - , 我们用python 版的就行。没什么差别
目标 : 定义和运行多个 Docker 容器的应用, 针咐铅对多个容器组,进前渣行一键启动和停止。
具体实现 : docker-compose.yml 来定义一组相关联的应用容器为一个项目(project) docker-compose.yml 就相当于 dockerfile 的 dockfile
概念
service 服务 , 包含多个运行的容器
project 项目, docker compose 管理的单元
自己跑了一便文档上的例子,确实比较好用哟
内容分别如下:
app.py
Dockerfile
docker-compose.yml
运行过程
看一下刚刚启动的容器:
上述命令会自动 帮你慧简悄构建镜像,并按照配置启动容器组。已经存在镜像,则不会成重新构建,除非 使用 docker-compose build 重新构建服务
停止过程
可以看出,是先停掉容器,然后再删除容器的,也会删除网络。所以必要的数据一定要 挂载到外面做持久化
可以看到不会重复构建镜像,只会创建新的网络和容器
可选的 参数
-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名
(up 的时候可以,使用 -p 参数修改 默认的 目录名的项目名)
检查 Compose 文件是不是对的,错误的话会有错误信息
停止容器组,依次删除容器和清楚创建的网络
进入指定的容器 ( services 里定义的服务名) 或者直接 docker exec
查看容器组 (只包含 compose 启动的容器)
列出 compose 文件中的镜像
默认会 用不同的颜色 显示 服务组的控制台日志
暂停一个服务容器,和 docker pause 一样的
拉取服务依赖的镜像
推送服务依赖的镜像到 Docker 镜像仓库
重启项目中的服务
所有关联的服务将会自动被启动
这个还是挺有用的,设置服务容器的个数
启动服务
关闭容器
这个命令是最常用的
ymal
一个基本模板
一些可用的配置项 (只说一下,常用的吧)
每个服务都必须通过 image 或者 build ( 使用 Dockerfile) 指令 指定镜像生成的方式
指定dockerfile 路径,相对于 docker-compose.ymal 文件 相对路径 或者 绝对路径
默认为 dockerfile 的入口命令,你可以用这个覆盖
覆盖默认的规则 : 项目名称 服务名称 序号
如果指定了 这个容器名,就没办法使用 docker-compose scale 命令了,因为多个容器名不能一样
指定当前容器 依赖那个容器(需要先启动)
下面的启动 顺序依次是 redis db web
web 服务不会等待 redis db 「完全启动」之后才启动
暴露端口,但不映射到宿主机
容器健康检查配置
和build 目的一样,指定某个镜像的生成方式
如果本地不存在 会尝试 pull
添加容器描述信息, 和 dockerfile 里面的 labels 一样
和 docker run --network 的一样
设置容器使用的网络
和 docker run -p 一样
HOST:CONTAINER 前面是 宿主机,后面是容器,单个 的话就是暴露容器端口
设置挂在目录
HOST:CONTAINER 宿主机路径/数据卷 : 容器路径
支持相对路径
以及其他命令
domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir
关于 compose 容器间的通信 (使用 服务名 即可)
下面关于我的 docker-compose.yml
[img]Docker Compose 入门(V3)
[TOC]
编写文件 docker-compose.yml
目录结构如下
在docker-compose.yml文件添加内容
重新构建镜像
运行所有容器。加上 -d 参数表示后台运行容器,加上 --build 参数表示运行容器前先重新构建镜像
指定镜像名称或者镜像id,如果该镜像在本地不存在,Compose会尝试pull下来
示例:
指定容器的名称
指定Dockerfile文件的路径。若用此指令,则每次执行 docker-compose up 都会构建镜像。
可以是一个路径,例如:
也可以是一个对象,用以指定Dockerfile和参数,例如:
覆盖容器启动后默认执行的命令
示例:
也可以是一个list,类似于Dockerfile总的CMD指令,格式如下:
链接到其他服务中的容器。可以指定服务名称和链接的别名使用 SERVICE:ALIAS 的形式,或者只指定服务名称,示例:
表示链接到docker-compose.yml外部的容器,甚至并非Compose管理的容器,特别是对于那些提供共享容拍弊器或共同服务。格式跟links类似 CONTAINER:ALIAS ,示例:
暴露端口信息。使用 宿主端口:容器端口 的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口),类似于docker run -p ,示例:
暴露端口,只将端口暴露给连接的服务,而不暴露给宿主机,示例:
容器的启动策略,有如下值可选:
卷挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro)。示例:
从另一个服务或者容器挂载卷。可以指定迅扰只读或者可读写,如果访问模式没有指定,则默认是可读写。示例:
设置环境变量。可以使用数组或者字典两种方式。只有一个key的环境变量可以在运行Compose的机器上找到对应的值,这有助于加密的或者特殊主机的值。示例:
从文件中获取环境变量,可以为单独的文件路径或列亩贺旦表。如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。如果有变量名称与 environment 指令冲突,则以envirment 为准。示例:
继承另一个服务,基于已有的服务进行扩展。
设置网络模式。采用与docker --network 参数相同的值,添加了特殊格式 service:[service name]
指定要加入的网络
配置dns服务器。可以是一个值,也可以是一个列表。示例:
配置DNS的搜索域,可以是一个值,也可以是一个列表,示例:
docker-compose文件官方文档
使用Spring Cloud与Docker实战微服务
docker-compose安装
多容器管理(docker-compose):
前面讲了 Dockerfile 用来构建 Docker 镜像,那么 docker-compose 则是用来创建容器的。 Docker 有三个主要的功能:Build、Ship 和 Run,使用 docker-compose 可以帮我们在 Run 的层面解神陪和决很多实际问题。docker-compose 通过一个 yaml 模板文件来统一管理多个容器的配置,如网络、数据卷、执行指令、环境变量、资源限制等等。有了 docker-compose 我们便可以一键重启、关闭、删除、监控所有的 docker 服务,只需要一次配置,则可以对容器乱衫进行统一管理,那么此时我们则不必为了每次要运行一堆容器时写大量的命令而头疼。
Docker Compose
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。 你可以也通过执行下面的命令,高速安装Docker Compose。
1. 安装 docker-compose:
方式一:
方式二:
2. 配置 docker-compose.yml 文件(注意: 冒号 -号后必须空格, 各级别必游盯须对其)
Docker的那些事儿—什么是docker compose?
从本节开始,开启docker compose学习。
上一篇: Docker的那些事儿—如何利用docker-machine配置管理machine?
前面我们学坦咐习了docker容器,了解了如何启动容器。那如果我需要启动多个容器,甚至还要严格控制这些容器的启动顺序,怎么办呢?当然了,我们可以通过脚本来完成这一相对复杂的流程控制,但是这显然不够灵活,逻辑稍微变化,脚本可能变化很大。基于此Docker提供了一种更加简单的方法,来管理多个容器的联动。
Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用(称为一个 project,旁圆即项目)。Compose 定位是“Define and run multi-container applications with Docker”,其前身是 Fig,兼容 Fig 的模板文件。你需要定义一个 YAML 格式的配置文件 docker-compose.yml ,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。
# 启动所有服务
$ docker-compose up
# 关闭所有服务
$ docker-compose stop
使用Compose包含三个运信塌最基本步骤:
1、定义Dockerfile文件,该文件定义了应用环境(镜像的构建)
2、定义docker-compose.yml文件,该文件定义了组成应用的服务
3、运行docker-compose up命令
一个典型的docker-compose.yml文件内容如下:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
关于docker-compose.yml文件,后面会详细介绍。
下一篇: Docker的那些事儿—如何安装docker-compose?
docker与docker-compose介绍,对比与使用
docker是一个供开发和运维人员开发,测试,部署和运行应用的容器平台。这种用linux container部署应用的方式耐巧叫容器化。
compose是一个用于运行和管理多个容手亩灶器化应用的工具毕扮。
我们可以列出下列几项来进行二者对比:
1.docker是自动化构建镜像,并启动镜像。 docker compose是自动化编排容器。
2. docker是基于Dockerfile得到images,启动的时候是一个单独的container
3. docker-compose是基于docker-compose.yml,通常启动的时候是一个服务,这个服务通常由多个container共同组成,并且端口,配置等由docker-compose定义好。
4.两者都需要安装,但是要使用docker-compose,必须已经安装docker
接下来,我们来安装docker ce,docker-compose,然后根据官网的关于docker-compose一个简单的例子来进一步理解
安装docker ce:
安装docker-compose:
或者获取安装脚本进行安装(仅限于centos7 or rhel7)
docker-compose例子官网URL:
文件目录
从docker-compose.yml我们可以看到,这个python应用包含两个部分,一个部分是web service, 一个是redis service,我们用‘docker-compose up’ 去build images or pull images, create containers和run这些containers。
最终,我们看到这个service在运行。其背后有4个images, 2个containers.而通过docke-compose则可以直接操作这整个service。
Docker从入门到精通之Docker Compose
Compose是一个用缓返于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需一个命令,就可以从配置中创建并启动所有服务。
用python构建一个简易网页统计网页点击量,docker-compose进行发布
Step1:创建项目
Step2:创建Dockerfile文件
Step3:在docker-compose.yml中定义services
Step4:用Docker compose构建和运行app
Step5:绑定一个数据卷
将当前目录与容器的/code目录绑定,这样可以动态修改代码
Step6:重新构建和运行app
先docker-compose down停止服务,在构建
用YAML文件定义服务,默认文件是docker-compose.yml,包含4个顶级key,version、services、networks、volumes
参胡哪猜考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
指定本 yml 依从的 compose版本
定义多个应用服务,包含环境配置、镜像构建等
指定构建镜像的路径
定义服务的block IO配置,参考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
指定自定义容器名称
定义服务间启动或关闭的依赖关系
覆盖容器启动的默认命令
domainname declares a custom domain name to use for the service container.
覆盖容器默认的entrypoint
从文件中添加环境变量到容器,可以是一个或多个文件
文件格式:
添加环境变量
暴露端口,但不映射到宿主机,只被连接的服务访问,仅可以指定内部端口
用于检测 docker 服务是否 健康 运行。
指定容器运行的镜像
设置容器标签
连接到另一个容器的网络,简单将就是让容器相互连通
服务的日志记录配置,driver:指定服务容器的日志记录驱动程序,默认值为json-file。有以下三个选项
仅在 json-file 驱动程序下,可以使用以下参数,限制日志得数量和大小。
syslog 驱动程序下,可以使用 syslog-address 指定日志接收地址。
设置网络模式,格式如下:
配置容器连接的网络
指定ip地址
端口映射,映射主机与容器端口,格式:Host:ontainer
容器裤型重启策略
存储敏感数据,比如密码
将主机数据卷挂载到容器
覆盖容器工作目录
关于dockercompose和两个dockercompose的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。