Docker编排工具Docker-compose

当然我们已经了解了Docker基础使用,当然我们要全面Docker化还有一段路要走,今天给大家带来的是编排工具,应为复杂度使用docker run 容器的时候需要配置很多内容比如端口映射,磁盘挂载,环境变量等,全部在命令中格式麻烦也不好保存,并且如果多个容器之前需要关联也特别麻烦,所以有了Docker三剑客之一的Docker-compose出面来解决这个问题.

附上:

喵了个咪的博客:w-blog.cn

官方Git地址:https://github.com/moby/moby

1.docker-compose 安装

> curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
> chmod +x /usr/local/bin/docker-compose

或者使用pip进行安装

> pip install -U docker-compose

安装完成查看版本

> docker-compose -v
docker-compose version 1.21.0, build 5920eb0

2.使用docker-compose编排镜像

这里以GitLab作为例子如下:

postgresql:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/postgresql-sameersbn:9.4-24
  environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm
  labels:
    aliyun.probe.url: tcp://container:5432
  volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql
gitlab:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/gitlab-sameersbn:latest
  links:
    - redis:redisio
    - postgresql:postgresql
  ports:
    - "10080:80"
    - "10022:22"
  environment:
    - TZ=Asia/Shanghai
    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login
    - GITLAB_TIMEZONE=Kolkata
    - GITLAB_HOST=localhost
    - GITLAB_PORT=80
    - GITLAB_SSH_PORT=22
    - GITLAB_EMAIL=admin@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_BACKUPS=daily
    - GITLAB_BACKUP_TIME=01:00
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string
  volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data
  labels:
    aliyun.probe.url: tcp://container:80
    aliyun.probe.initial_delay_seconds: "10"
    aliyun.routing.port_80: gitlab-test
redis:
  image: registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn:latest
  volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis

部署Gitlab需要三个程序(gitlab,redis,postgresql),如果使用docker run的方式完成以上镜像的构建特别麻烦,而且在有一点点需要更新的时候修改镜像也成为一个问题,使用docker-compose只需要写好编排一个命令就能运行起来

启动

> vim vi
# -d 是后台运行  -f 指定文件
> docker-compose up -d
> docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                                                   NAMES
b4679b902b3c        registry.cn-hangzhou.aliyuncs.com/acs-sample/gitlab-sameersbn:latest       "/sbin/entrypoint...."   6 minutes ago       Up 25 seconds       443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp root_gitlab_1
b9026534481d        registry.cn-hangzhou.aliyuncs.com/acs-sample/postgresql-sameersbn:9.4-24   "/sbin/entrypoint.sh"    6 minutes ago       Up 25 seconds       5432/tcp                                                root_postgresql_1
84a222af6c9e        registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn:latest        "/sbin/entrypoint.sh"    6 minutes ago       Up 25 seconds       6379/tcp                                                root_redis_1

修改更新

> vim  docker-compose.yml
...
  ports:
    - "10080:8080"
...
> docker-compose up -d
root_redis_1 is up-to-date
root_postgresql_1 is up-to-date
Recreating root_gitlab_1 ... done
> docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                                                             NAMES
4416b7e4d262        registry.cn-hangzhou.aliyuncs.com/acs-sample/gitlab-sameersbn:latest       "/sbin/entrypoint...."   16 seconds ago      Up 15 seconds       80/tcp, 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->8080/tcp   root_gitlab_1
b9026534481d        registry.cn-hangzhou.aliyuncs.com/acs-sample/postgresql-sameersbn:9.4-24   "/sbin/entrypoint.sh"    8 minutes ago       Up About a minute   5432/tcp                                                          root_postgresql_1
84a222af6c9e        registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn:latest        "/sbin/entrypoint.sh"    8 minutes ago       Up About a minute   6379/tcp    

关闭

> docker-compose down
Stopping root_gitlab_1     ... done
Stopping root_postgresql_1 ... done
Stopping root_redis_1      ... done
Removing root_gitlab_1     ... done
Removing root_postgresql_1 ... done
Removing root_redis_1      ... done

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猛牛哥的博客

virmach家的KVM小鸡DDwin系统

1583
来自专栏杨建荣的学习笔记

最近的几个技术问题总结和答疑(八) (r9笔记第72天)

最近处理了几个网友的疑问,拿过来总结一下。 1)11gR2静默安装的校验失败 有些朋友反馈使用静默安装的时候,配置了响应文件,但是总是会校验邮箱和密码,这个地方...

3203
来自专栏WebHub

Mac下禁用一些高占用的进程

晚上在 terminal 里敲代码,发现系统异常的卡顿。在 Activity Monitor 里发现 ReportCrash 进程占用了大量的 CPU

472
来自专栏Netkiller

Python Syslog Server 开发实例

本程序用于收集,防火墙,路由器,交换机等日志 ---- 目录 1. 配置Cisco ASA 5550 Firewall 2. syslog 服务器脚本 1. 配...

2886
来自专栏双十二技术哥

记一次诡异的Bug修复——App自启动

在上一版本App临发版之前,QA和PM同学同时报了一个严重的Bug:App退出之后会自动重新启动,也就是用户关不了App。开发者梦寐以求的应用常驻就这么被莫名其...

664
来自专栏freesan44

iOS中相同IP,不同端口,session失效的问题

公司在https服务器(端口443)进行正常登陆业务等处理 https://ip1:443/ 然后在端口444服务器进行资料文件上传等处理 https:/...

633
来自专栏FreeBuf

树莓派随身工具箱:中间人劫持获取控制权

上文讲解了树莓派随身工具箱的环境搭建,这段时间又对其进行了一些优化,主要是从便携美观上面改进。同时,在实际使用中发现了一些问题,并做了小小的改动。

1133
来自专栏技术小黑屋

Check if a Python Module Is Installed

I was once stucked in How to check Whether a Python module has been installed or...

962
来自专栏北京马哥教育

Linux 新手必会的21条命令合集

1477
来自专栏FreeBuf

一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

5536

扫码关注云+社区