一、docker-compose 的介绍

docker-compose是一种容器编排工具,可以将多个docker容器关联部署。通过yaml文件,可以描述应用的架构,如使用什么镜像、数据卷、网络、绑定服务端口等等,然后再用一条命令就可以管理所有的服务(如启动、停止、重启、日志监控等等),可以鼎泰扩展容器的规模等等,和docker swarm非常相似又有区别。

1.相关命令介绍

docker-compose.yml 内容相关

  * image:指定镜像,如果本地不存在,Compose会尝试去docker hub pull下来

image: centos
image: orchardup/postgresql
image: a4bc65fd
 

* build:指定Dockerfile文件的路径,Compose将会以一个已存在的名称进行构建并标记,并随后使用这个image

build: /path/to/build/dir
 

* command:重写默认的命令

command: bundle exec thin -p 3000
 

* links 连接到其他服务中的容器,可以指定服务名称和这个链接的别名,或者只指定服务名称

links:
- db
- db:database
- redis
 

* external_links:连接到在这个docker-compose.yml文件或者Compose外部启动的容器,特别是对于提供共享和公共服务的容器。在指定容器名称和别名时,external_links遵循着和links相同的语义用法

external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
 

* ports:暴露端口,指定两者的端口(主机:容器),或者只是容器的端口(主机会被随机分配一个端口)

ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
 

* expose:暴露端口而不必向主机发布它们,而只是会向链接的服务(linked service)提供,只有内部端口可以被指定

expose:
- "3000"
- "8000"
 

* volumes:挂载路径最为卷,可以选择性的指定一个主机上的路径(主机:容器),或是一种可使用的模式(主机:容器:ro)

volumes:
- /data/www:/usr/share/nginx/html
- container_name
 

* environment:加入环境变量,可以使用数组或者字典,只有一个key的环境变量可以在运行Compose的机器上找到对应的值,这有助于加密的或者特殊主机的值

environment:
RACK_ENV: development
SESSION_SECRET:
environments:
- RACK_ENV=development
- SESSION_SECRET
 

* env_file:从一个文件中加入环境变量,该文件可以是一个单独的值或者一张列表,在environment中指定的环境变量将会重写这些值

env_file:
- .env RACK_ENV: development
 

* net: 网络模式,可以在docker客户端的--net参数中指定这些值

net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
 

* 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
 

* working_dir,entrypoint,user,hostname,domainname,mem_limit,privileged,restart,stdin_open,tty,cpu_shares

上述的每一个都只是一个单独的值,和docker run中对应的参数是一样的

cpu_shares: 73

working_dir: /code

entrypoint: /code/entrypoint.sh

user: postgresql

hostname: foo

domainname: foo.com

mem_limit: 1000000000

privileged: true

restart: always

stdin_open: true

tty: true

二、下载安装包

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

添加执行权限

chmod +x /usr/bin/docker-compose

三、目录结构

三、构建 nginx dockerfile 文件

[root@node03 nginx]# vi dockerfile

#Nginx
#Version 1.0.1
#Author lisea

#Base image
FROM centos:7

#Maintainer
MAINTAINER lisea cnlisea@126.com

#Commands
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80
CMD ["nginx"]

1、通过 dockerfile 文件构建镜像

# docker build -t lisea/nginx:v1.0.1 .

2、查看镜像

3、构建 docker-compose 文件

[root@node03 docker]# vi docker-compose.yml

version: '2'
services:
web1:
image: lisea/nginx:v1.0.1
volumes:
- /data/www1:/usr/share/nginx/html
ports:
- "8080:80"
web2:
image: lisea/nginx:v1.0.1
volumes:
- /data/www2:/usr/share/nginx/html
ports:
- "8081:80"
web3:
image: lisea/nginx:v1.0.1
volumes:
- /data/www3:/usr/share/nginx/html
ports:
- "8082:80"

  

4、使用docker-compose 开始构建容器

 docker-compose up -d  ##### up 构建运行  -d 后台运行

5、查看

[root@node03 docker]# docker-compose ps

6.查看日志

[root@node03 docker]# docker-compose logs

7、 停止并清除容器[ 需在docker-compose.yml文件同目录下,或 -f 指定docker-compose.yml路径 ]

# docker-compose down

												

docker之compose 编排项目的更多相关文章

  1. (转)Docker - 使用 compose 编排服务

    在园子里看到了这篇关于 compose 的文章,非常好!!转过来,先附上原文地址 http://www.cnblogs.com/52fhy/p/5991344.html ----- 入门示例 一般步骤 ...

  2. 九、docker swarm主机编排

    一. 什么是Docker Swarm Swarm 是 Docker 公司推出的用来管理 docker 集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/do ...

  3. 使用Docker compose编排Laravel应用

    前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...

  4. 使用Docker Compose编排Spring Cloud微服务

    文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...

  5. Docker之Compose服务编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...

  6. (转)Docker之Compose服务编排

    转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...

  7. 使用docker compose编排容器

    一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...

  8. Docker(二十六)-Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  9. Docker系列之(五):使用Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

随机推荐

  1. pycharm的放大和缩小字体的显示 和ubunt的截圖工具使用 ubuntu上安装qq微信等工具

    https://www.cnblogs.com/sui776265233/p/9322074.html#_label0 ubuntu: 截圖工具的使用 在ubuntu 10.04 的时候,还可以很方便 ...

  2. matlab使用总结2

    1.MATLAB中a./b与a/b的区别以及左除和右除 http://blog.csdn.net/wk119911/article/details/7452411 a=[1 2;3 4]; b=[1 ...

  3. Vue.js Is Good, but Is It Better Than Angular or React?

    Vue.js is a JavaScript library for building web interfaces. Combining  with some other tools It also ...

  4. It was not possible to find any compatible framework version

    It was not possible to find any compatible framework version The specified framework 'Microsoft.NETC ...

  5. make报错

    笔记本Ubuntu16.04环境下,进入项目的src目录下执行make操作,发现报如下错误 /bin/sh: 1: /usr/bin/libtool: not found makefile:89: r ...

  6. 【python】关于python中模块导入的总结

    precondition:比如我有如下这样的文件目录结构 说明:add和debug两个包都隶属于src目录,它们是同级目录,其中在add路径下有一个add.py的模块,里面定义了一个jiafa()的函 ...

  7. CSS中如何选择ul下li的奇数、偶数行

    <style> #Ulist li:nth-of-type(odd){ margin-left: 20px;}奇数行 #Ulist li:nth-of-type(even){margin- ...

  8. Linq EF 添加数据执行事务处理

    在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例 2012-12-12 10:39             5538人阅读          ...

  9. rpm -qa 查找文件

    系统环境:centos6.6 yum install 安装的文件找不到安装路径,使用whereis和find -name都无效 rpm -qa | grep -i 关键字  查找 rpm -ql fi ...

  10. OpenCV——凸包

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...