Docker容器化部署实践Docker Compose

上期我们讲了在Docker 容器化部署实践--入门讲了Docker作为云计算的优点以及它的安装常见命令。今天给大家介绍一个简单的编排工具docker compose。

在讲之前我继续沿用昨天的提到一个命令:

docker run -d -p 5000:5000 --name echo ubuntu:16.04 /bin/bash -c "while true; do echo 1; sleep 1; done"
-d 参数后台运行
-p 端口号映射
--name 自定义容器名字,容器命名是唯一的,若要使用需要删除之前的。

启动好了之后我们可以通过docker logs -f echo查看容器内数字1的打印。

我们从上面可以看到整个操作起来相对比较繁琐,既要输入各个参数,又有版本号,标签等等。如果我们只是一个容器还好用个shell定义一个快捷方式就行。

但是我们往往有多个容器,多个容器相互关联。比如一个web项目,我们可能有db容器,缓存容器,离线任务的容器,日志容器等等,这个时候如果我们还用手动输入进行控制,不仅非常麻烦还容易出错。

这时通过shell自定义命令就显得吃力一点了,并且不能做到多服务启动重启等等。

所以Docker官方出了一款编排工具,叫Compose,它通过一个单独docker-compose.yml模板文件来定义一组相关的容器,简单的理解就是通过这种方式把对应的各个容器相互组装起来,进行启动,停止,删除。

Compose这是由Python语言编写,通过Docker提供的API进行容器的管理,使用操作也非常方便。

下面来看一个docker-compose.yml 的文件形式:

version: "3"  # 注意版本号
services:  # 一个应用的容器,可以包括多个相同镜像容器实例
  dev:
    image: hub.yourdomain.com/test:1.0 # 镜像地址
    command: python app.py  # 容器执行命令
    container_name: test  # 容器名
    restart: always  
    volumes:
      - ./docker:/data  # 挂载地址
    ports:
      - "9527:9527" #端口
    environment:
      - PYTHONPATH=/data
      - XXX_API_SETTINGS=XXX.config.dev
    network_mode: bridge
    extra_hosts: # 配置额外的host名称
      - "test.yourdomain.com:127.0.0.1"
    external_links: # 链接到外部容器
      - redis:redis 
      - mysql:mysql

通过上面的简单配置,我们就能把多个容器链接处理好了:

通过docker-compose up dev就能把整个服务启动起来了并且把端口号已经环境变量地址等等都设置好了,非常方便。

下面我们来说一下docker-compose 安装,docker-compose 安装方式非常简单,一条命令就完事儿。

sudo pip install -U docker-compose

安装好了如果你Linux或者Mac终端是使用的ohmyzsh的话,可以在zshrc里面添加 plugins +=(docker-compose)

d4958970bd8391f51169645b0bcb353c.webp


给大家贴一下我自己常使用的自动补全命令行

plugins=(git ruby autojump osx tmux zsh-syntax-highlighting brew-cask brew colored-man rsync sudo node-docs history-substring-search docker docker-compose fabric redis-cli cp zsh-autosuggestions )

我简单介绍一下常使用的几个命令(和docker没有太多差别),更多的请参考 docker-compose -h

docker-compose logs dev  # dev 是定义service服务
docker-compose up -d dev # 启动服务,会进行自动拉取镜像,进行关联服务
docker-compose restart dev # 重启服务
docker-compose rm dev # 删除服务

通过Compose我们可以快速编写属于自己docker项目的启动配置文件,方便我们快速启动,重启服务,没有使用的同学可以用起来了,今天内容就先到这儿了。

容器化部署实践,我打算从基础操作到实战应用以一个系列进行分享,今天是第二篇docker-compose编排,后期我将持续分享更多相关内容,从容器化入门使用到部署实践编排技术,欢迎大家持续进行关注。


猜你喜欢

转载自blog.51cto.com/15009257/2552286