Docker-compose

root
233
文章
0
评论
2020年5月14日15:18:50 评论 3767字阅读12分33秒

Docker-compose

任务编排介绍

场景:

我们在工作中未来完成业务目标,首先把业务拆分成多个子任务,然后对这些子任务进行顺序组合,当子任务按照方案执行完毕后,就完成了业务目标

任务编排,就是对多个子任务执行顺序进行确定的过程

常见的任务编排工具:

单机版:

  • docker compose

集群版:

  • Docker swarm Docker
  • Mesos Apache
  • Kubernetes(k8s)Google

docker compose是什么

compose是定义和运行多容器docker应用程序的工具。通过编写,您可以使用YAML文件来配置应用程序服务。然后,然后使用单个命令创建并启动配置中的所用服务。

docker compose在linux下需要自己安装,在windows和ios下都是自带的

docker compose的特点,本质:docker 工具

对象:应用服务

配置:YAML格式配置文件

命令:检点

执行:定义和运行容器

docker compose的配置文件

docker-compose.yml

文件后缀是yml

文件内容遵循ymal格式

 

docker compose的安装

查看官方文档,这里写的很详细,我就搬下来了

1.下载github上的docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

3.升级

如果要从Compose 1.2或更早版本进行升级,请在升级Compose之后删除或迁移现有容器。这是因为从1.3版开始,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。

如果Compose检测到创建的没有标签的容器,它将拒绝运行,这样您就不会最终获得两组标签。如果要继续使用现有容器(例如,因为它们具有要保留的数据量),则可以使用Compose 1.5.x通过以下命令迁移它们:

docker-compose migrate-to-labels

另外,如果您不担心保留它们,可以将其删除。撰写只是创建新的。

docker container rm -f -v myapp_web_1 myapp_db_1 ...

4.卸载
如果使用curl以下命令进行安装,则要卸载Docker Compose :

sudo rm /usr/local/bin/docker-compose

如果使用pip以下命令进行安装,则要卸载Docker Compose :

pip uninstall docker-compose

这里我说一下,如果没有过不墙的话,就使用过内的站点进行下载docker-compose

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

赋予执行权限

sudo chmod +x /usr/local/bin/docker-compose

检测版本,测试是否安装成功

docker-compose --version
[root@hwf ~]# docker-compose --version
docker-compose version 1.24.0, build 0aa59064

docker-compose常用指令

image

指定镜像名称或者镜像id,如果该镜像在本地不存在,compose会尝试pull下来

示例: java

build

指定Dockerfile文件的路径。可以是一个路径

示例:

build: /.dir

build:

     centext:  ./dir

      dockerfile:  Dockerfile-alternate

       args:

           buildno: 1

command

覆盖容器启动后默认执行的命令

示例:

command:bundle exec thin -p 3000

ports

暴露端口信息,使用宿主机端口:容器端口的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口),类似于docker run -p ,

示例:

ports:

   - "3000"

   - "3000-3005"

    - "8000:8000"

    - "9090-9091:8080-8081"

    - "49100:22"

     - "127.0.0.1:8001:8001"

      - "127.0.0.1:5000-5010:5000-5010"

expose

暴露端口,只将端口暴露给连接的服务,而不暴露给宿主机

expose:

  - "3000"

  -  "8000"

volumes

卷挂载路径设置。可以设置宿主机路径或加上访问模式,

示例:

volumes:

#Just specify a path and let the engine create a volume

    - /var/lib/mysql

# Specify an absolute path mapping

    -  /opt/data:/var/lib/mysql

# Path on the host,relative to the compose file 

    -  ./cache:/tmp/cache

# User-relative path

    -  ~/configs:/etc/configs/:ro

# Named volume

     - datavolume:/var/lib/mysql

volumes_from

从另一个服务或者容器挂载卷。可以指定只读或者可读写,如果访问模式没有指定,则默认是可读写。示例:

volumes_from:

  - service_name

  - service_name:ro

  - container:container_name

environment

设置环境变量。可以使用数组或者字典两种方式。只有一个key的环境变量可以运行compose的机器上找到对应有助于加密的或者特殊主机的值。

示例:

environment:

     - RACE_ENV:=development

     - SHOW:=true

     - SESSION_SECRET

env_file

从文件中获取环境变量,可以为单独的文件路径或列表。如果通过docker-compose -f file指定了模板文件,则env_file中路径会基于模板文件路径。如果有变量名称与environment指令冲突,则以environment为准

示例:

env_file: .env

env_file:

    - ./common.env

    - ./apps/web.env

    -  .opt.secrets.env

extends

继承另一个服务,基于已有的服务进行扩展。

net

设置网络模式:示例

net:“bridge"

net:     "host"

net:     "none"

net:     "container:[service name or container name/id]"

dns

配置dns服务器,可以是一个值,也可以是 一个列表。

是咧:

dns: 8.8.8.8

dns:

    - 8.8.8.8

    - 9.9.9.9

dns_search

配置DNS的搜索域,可以是一个值,也可以是一个列表,示例:

dns_search: example.com

dns_search:

    - dc1.example.com

    - dc2.example.com

 

docker-compose模板学习

version: "3.3"
services:
 nginx:[起容器名称]
  image: nignx:xx[镜像名称,没有默认去仓库拉去]
  ports:[和run里的-p是一个意思]
   - "80:80"
  links:[帮助nginx容器链接到下面的app容器,这里要做nignx的反向代理,默认调用app容器的ID地址]
   - app
  volumes:
   - "./nginx.conf.d/:/etc/nginx/conf.d/"
 app:[起容器名称,这个也是应用端]
  image: luban/app[镜像名称,没有默认去仓库拉去]

 

安装好docker-compose,去dockerfile的目录下就可以去编写x.yml文件了,也就是说这个文件放的位置要和你应容器目录是平级的

cd /opt/dockerfile/kk/

这个文件名字是定死的

[root@hwf kk]# vim docker-compose.yml

 

实验二:使用docker-compose编排微服务

编排微服务

1.在根目录下创建文件夹/app

2.在app目录下新建docker-compose.yml文件和三个文件夹,eureka,user,order

3.在eureka,user,order三个文件夹下分别构建eureka镜像,user镜像,order镜像,以构建eureka服务镜像为例,在eureka文件夹下新建dockerfile文件并且将eureka服务的可运行jar包上传到该目录

 

 

 

启动的话docker-compose up

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年5月14日15:18:50
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Harbor镜像仓库 Docker

Harbor镜像仓库

Harbor镜像仓库 一、Harbor特性介绍 基于角色访问控制 每个人角色不同,需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。例如,开发人员需要对项目构建这就需要用到读写权限(push...
Centos7解决systemctl无法使用 Docker

Centos7解决systemctl无法使用

systemd整合: 因为systemd要求CAPSYSADMIN授权,从而得到了读取到宿主机cgroup的能力,Centos7中已经用fakesystemd代替了systemd来解决依赖问题。如果仍...
Dockaer网络 Docker

Dockaer网络

Dockaer网络 docker本地网络类型 查看本地支持网络类型 docker network ls # docker network ls NETWORK ID NAME DRIVER SCOPE...
Dockerfile练习 Docker

Dockerfile练习

Dockerfile练习 实验一:要求使用centos7基础镜像,搭建httpd+sshd+php的镜像,实现httpd与sshd服务能够正常访问 创建存放dockerfile的目录 mkdir -p...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: