docker-compose使用笔记
继上篇 Docker使用笔记 ,成功地在一台服务器上创建了docker 镜像仓库,然后在其它服务器 下载这个仓库的镜像,并试运行。这对于做多机子负载运维工作,已经是非常便利了,一旦我们在一台服务器上发布过服务之后,后面就不用在其它服务器上重复运维操作,只需2步即可:下载镜像,运行镜像。
但是新的问题来了,如果第一台机子布署的这个应用,是一个微服务架构,或者多应用分布式架构,站点加服务,一共有几十个,那也是比较麻烦的事情。有没有一种方式可以一次性配置,一键发布呢?当时是有的,我们可以手动写批处理命令。不过还是要花费不少的时间和精力。Docker-compose可以非常便利地解决这个问题,只需要写一份配置文件,然后执行即可。这要比自己写批处理命令要来得高效。
下面是docker-compose的安装,ubuntu系统安装都是快: #apt install docker-compose 可以去点根烟了...
回来看看安装情况, #docker-compose version
docker-compose version 1.8.0, build unknown
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
发现版本有点低,不过也没关系
下面是写一份 docker-compose.yaml
我这份文件比较简单,就是部署2个 web app
version: "2" services: app-1: image: 192.168.40.128:5000/dotnetimage:1.0 container_name: dotnetapp-container-1 expose: - "80" ports: - "8022:80" networks: - dotnetcore-network app-2: image: 192.168.40.128:5000/dotnetimage:1.0 container_name: dotnetapp-container-2 expose: - "80" ports: - "8023:80" networks: - dotnetcore-network networks: ##定义网络组 dotnetcore-network: ## 网络组名称 driver: bridge ## 网络的模式
版本号只能选2, 因为安装的dock-compose版本有点低
2个容器都是用着同一个私有仓库, 192.168.40.128:5000/dotnetimage:1.0
2个不同的对外端口,8022,8023
分别自定义了容器名:dotnetapp-container-1 dotnetapp-container-2
将这个文件放在第2台服务器,此时这台服务器需要安装 docker和docker-compose
在此文件所在的文件下执行 #docker-compose build
app-2 uses an image, skipping
app-1 uses an image, skipping
说是跳过,不知何故。不知到底是build成功了没有。
尝试性地再执行 #docker-compose up
容器创建成功了
但这是前台模式,必须Ctrl+C才能做其它事,只能先卸下来 #docker-compose down
然后再 #docker-compose up -d 后台进程运行
试验结果:
一步到位,发布了2个web app, 这就是容器编排 docker-compose 的魅力!