如何通过Docker-Compose一键部署SuperMap iCloudManager

来源:互联网 发布:传智软件科技有限公司 编辑:程序博客网 时间:2024/06/07 09:18

题记


前面一篇博客已经向各位介绍了SuperMap iCloudManager 8C SP2已经支持Docker平台了,并介绍了如何部署,当然我们可以看到,当时的部署方式通过一个已经安装好的VMWare 的OVF包(内置了iCM\Zabbix-server\mariaDB),然后与另外一个Docker环境进行联动。

SuperMapiCloudManager 8C SP2正式发布:拥抱Docker
http://blog.csdn.net/chinagissoft/article/details/51545904


这种方式的好处就是,好多信息同时帮用户做了,用户可以非常方便的使用这个OVF包,那如果是物理环境呢?可能用户还需要自己来部署类似OVF实现的步骤,而且更重要的是,这与我们现在Docker所提倡的微服务相矛盾,所谓微服务简单来说就是将原来在同一个服务器的多个服务器拆分为独立的容器运行,这与相互之间并不影响,而且隔离安全,在我们分析问题也能够清楚的划分界限。

所以,我们更希望的部署方式应该是这样的。


所有的组成部分都已容器的形式存在,那么我们就需要创建并启动相关的容器即可,非常高兴的是,目前我们常用的容器对象,在容器仓库中都可以找到,包括SuperMap GIS 8C 的相关产品,如果我们涉及的服务越多,所参与的容器就越多,那么问题来了,如果非常好的去编排、管理这些大量的容器?如果靠人工来做,岂不是非常郁闷。


还好,Docker 提供了Docker-Compose工具来解决这个问题。

Docker Compose是一个部署多个容器的简单但是非常必要的工具,Docker Compose在实际工作中非常有价值,相信随着Docker Compose的完善,其必将取代docker run成为开发者启动docker容器的首选。




1、默认安装好的Docker环境是没有docker-compose的,需要额外安装

安装方式1:下载包安装

curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
安装之后需要设置权限
chmod +x /usr/local/bin/docker-compose

安装方式2:直接apt-get install即可

sudo pip install -U docker-compose

安装完毕之后,就可以直接运行docker-compose命令了。

2、编排docker-compose.yml

由于SuperMap iCloudManager需要借助于Zabbix-Server进行监控,相关监控信息默认存储在MariaDB(MySQL),所以,只需要这三种镜像即可。

 zabbix-db:   image: monitoringartist/zabbix-db-mariadb   ports:     - "3306:3306"   environment:     - MARIADB_USER=zabbix     - MARIADB_PASS=zabbix zabbix-server:   image: monitoringartist/zabbix-3.0-xxl   ports:     - "80:80"     - "10051:10051"   links:     - zabbix-db:zabbix_db   environment:     - ZS_DBHost=zabbix_db     - ZS_DBUser=zabbix     - ZS_DBPassword=zabbix icloudmanager:   image: supermap/icloudmanager:c802   environment:     - ZABBIX_URI=http://zabbix-server:80/api_jsonrpc.php     - ZABBIX_USERNAME=Admin     - ZABBIX_PASSWORD=zabbix     - PLATFORMTYPE=DOCKER      - DOCKER_SERVERIP=192.168.21.178  #修改你自己的Docker服务器IP     - DOCKER_SERVERPORT=2375  #修改你自己的Docker端口     - DOCKER_PROTOCOL=tcp     - DOCKER_API_VERSION=1.22   ports:     - "8080:8080"   links:     - zabbix-server:zabbix-server

我们在使用Docker Compose就可以通过我们编排好的docker-compose.yml文件来自动化的完成逻辑部署。

注意:

docker-compose的docker-compose.yml与dockerfile都需要编排脚本,两种区别也比较明显。docker-compose.yml主要编排容器与容器直接的关系,dockerfile主要编排一个容器内部的关系。当然两者的命令类似,(这是我个人的简单理解)


在上面的yaml文件中,我们可以看到compose文件的基本结构。首先是定义一个服务名,下面是yaml服务中的一些选项条目:

  • image:镜像的ID
  • build:直接从pwd的Dockerfile来build,而非通过image选项来pull
  • links:连接到那些容器。每个占一行,格式为SERVICE[:ALIAS],例如 – db[:database]
  • external_links:连接到该compose.yaml文件之外的容器中,比如是提供共享或者通用服务的容器服务。格式同links
  • command:替换默认的command命令
  • ports: 导出端口。格式可以是:ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"
  • expose:导出端口,但不映射到宿主机的端口上。它仅对links的容器开放。格式直接指定端口号即可。
  • volumes:加载路径作为卷,可以指定只读模式:
  • volumes_from:加载其他容器或者服务的所有卷
  • net:容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个。
  • dns:可以设置一个或多个自定义的DNS地址。
  • dns_search:可以设置一个或多个DNS的扫描域。
  • 其他的working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares,和docker run命令是一样的,这些命令都是单行的命令。例如:

注意:在linux执行注意格式问题。

关于docker端口修改,参考上一篇安装iCM链接介绍。


3、Docker-Compose执行

默认直接运行docker-compose up即可(up命令及创建和启动容器实例),也可以添加参数-f 输入docker-compose.yml的路径,如果不输入,只要在运行命令当前路径存放yml文件即可。

root@docker2:~# docker-compose up -dPulling zabbix-db (zabbix/zabbix-db-mariadb:latest)...latest: Pulling from zabbix/zabbix-db-mariadb1544084fad81: Pull completedf0fc3863fbc: Pull completea3d54b467fad: Pull complete86f54d6b4779: Pull completecfba9b6f790a: Pull complete1db3f9e7d065: Pull completebf38cfadf2fd: Pull completeef32faf6169c: Pull completeb030f283076d: Pull complete263abf799cfb: Pull completeaf166cd8baec: Pull complete8a2ea714f6e1: Pull completeDigest: sha256:4e306267f5e9b37efc48ae7cefcbd0befc366943b125596f2d46c8511160f02bStatus: Downloaded newer image for zabbix/zabbix-db-mariadb:latestPulling zabbix-server (zabbix/zabbix-3.0:3.0.0)...3.0.0: Pulling from zabbix/zabbix-3.077494712c17c: Pull complete9deb9659ce4e: Pull complete0e737cb310ea: Pull complete16d24c04e4af: Pull complete1f9078a7675f: Pull completea93c62422c98: Pull complete7b63781750d3: Pull complete7250a285fc56: Pull completecc056fd00c94: Pull complete6ba115307d0f: Pull complete2d8e0b63fc5e: Pull completeDigest: sha256:6dad46ad179209961208e9b0002932231fae1395c4c2d33776b7d4cb8796404fStatus: Downloaded newer image for zabbix/zabbix-3.0:3.0.0Pulling icloudmanager (supermap/icloudmanager:c802)...c802: Pulling from supermap/icloudmanager5c710afc4104: Downloading [==>                                                ] 3.243 MB/65.7 MB0c1b7a0002c7: Download complete257fb77d6206: Download complete1348637f7ed1: Download complete4d6732aef6e2: Download complete4d5a6dcd3514: Download complete984abbe5b293: Download complete7620e89572f3: Downloading [====>                                              ] 1.837 MB/22.59 MB6f29d129414f: Downloading [=========>                                         ] 416.8 kB/2.202 MBc4274a2d3f19: Downloading [=================>                                 ] 1.605 MB/4.489 MBd41f9a16045f: Download completed27c03ab4b59: Downloading [>                                                  ] 2.697 MB/192.9 MB7e28ec434867: Download complete352eba0511ce: Downloading [================================>                  ] 5.684 MB/8.621 MBd66f66e4bcef: Download complete5f822d80f039: Download complete7e8cea3fb905: Download completeb624c51cbbab: Pull complete3b200fe90bd8: Pull completeDigest: sha256:22754e49ff94feeaadf8a32fbfebf1153a3c5d4499d1db9ead127e2d71d16c10Status: Downloaded newer image for supermap/icloudmanager:c802Creating root_zabbix-db_1Creating root_zabbix-server_1Creating root_icloudmanager_1root@docker2:~#


我们可以看到已经下载好的镜像

root@docker2:~# docker imagesREPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZEzabbix/zabbix-3.0          3.0.0               2d8e0b63fc5e        30 hours ago        719.8 MBsupermap/icloudmanager     c802                3b200fe90bd8        4 days ago          533.6 MBzabbix/zabbix-db-mariadb   latest              8a2ea714f6e1        13 days ago         554.6 MBubuntu/mysql               latest              62b80c65d15b        6 months ago        373.3 MBubuntu/os                  latest              39eea0e53d4e        6 months ago        653.2 MBubuntu                     14.04               1d073211c498        7 months ago        187.9 MBubuntu                     14.04.3             1d073211c498        7 months ago        187.9 MBubuntu                     12.04               0ac5b09d8536        7 months ago        136.1 MBtutum/ubuntu               latest              151c4704c045        11 months ago       251.5 MBtraining/sinatra           latest              f0f4ab557f95        2 years ago         447 MB


也可以查看已经配置好的运行实例

root@docker2:~# docker ps -aCONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                     PORTS                                                              NAMES6c444ce91ca4        supermap/icloudmanager:c802   "/bin/sh -c /etc/iclo"   8 minutes ago       Up 8 minutes               0.0.0.0:8080->8080/tcp                                             root_icloudmanager_1ee4b8e6cff5c        zabbix/zabbix-3.0:3.0.0       "/config/bootstrap.sh"   8 minutes ago       Up 8 minutes               0.0.0.0:80->80/tcp, 0.0.0.0:10051->10051/tcp, 162/udp, 10052/tcp   root_zabbix-server_1d3f65bdcb149        zabbix/zabbix-db-mariadb      "/run.sh"                8 minutes ago       Up 8 minutes               0.0.0.0:3306->3306/tcp                                             root_zabbix-db_146ddb7c1d0d7        ubuntu:14.04                  "/bin/bash"              8 weeks ago         Exited (137) 4 hours ago                                                                      sharp_raman1cf6125b550f        ubuntu:12.04                  "/bin/bash"              8 weeks ago         Exited (130) 8 weeks ago                                                                      big_mirzakhanic1ba487df40a        62b80c65d15b                  "/bin/sh -c mysqld"      6 months ago        Exited (1) 6 months ago                                                                       naughty_lovelace5743c82b6cba        62b80c65d15b                  "/bin/sh -c mysqld /b"   6 months ago        Exited (1) 6 months ago                                                                       awesome_leakey

4、启动iCM管理界面



问题来了,如果我们的宿主机重启之后,所有的容器实例就关闭了,如何还能保证编排的容器能够按照逻辑启动呢?

1、关闭docker服务测试

root@docker2:~# service docker restartdocker stop/waitingdocker start/running, process 15141root@docker2:~# docker ps -aCONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                        PORTS               NAMES6c444ce91ca4        supermap/icloudmanager:c802   "/bin/sh -c /etc/iclo"   38 minutes ago      Exited (137) 10 seconds ago                       root_icloudmanager_1ee4b8e6cff5c        zabbix/zabbix-3.0:3.0.0       "/config/bootstrap.sh"   38 minutes ago      Exited (137) 10 seconds ago                       root_zabbix-server_1d3f65bdcb149        zabbix/zabbix-db-mariadb      "/run.sh"                38 minutes ago      Exited (143) 18 seconds ago                       root_zabbix-db_146ddb7c1d0d7        ubuntu:14.04                  "/bin/bash"              8 weeks ago         Exited (137) 5 hours ago                          sharp_raman1cf6125b550f        ubuntu:12.04                  "/bin/bash"              8 weeks ago         Exited (130) 8 weeks ago                          big_mirzakhanic1ba487df40a        62b80c65d15b                  "/bin/sh -c mysqld"      6 months ago        Exited (1) 6 months ago                           naughty_lovelace5743c82b6cba        62b80c65d15b                  "/bin/sh -c mysqld /b"   6 months ago        Exited (1) 6 months ago                           awesome_leakey

2、使用docker-compose restart命令

root@docker2:~# docker-compose restartRestarting root_icloudmanager_1 ... doneRestarting root_zabbix-server_1 ... doneRestarting root_zabbix-db_1 ... done

3、查看docker运行实例

root@docker2:~# docker ps -aCONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                     PORTS                                                              NAMES6c444ce91ca4        supermap/icloudmanager:c802   "/bin/sh -c /etc/iclo"   48 minutes ago      Up 15 seconds              0.0.0.0:8080->8080/tcp                                             root_icloudmanager_1ee4b8e6cff5c        zabbix/zabbix-3.0:3.0.0       "/config/bootstrap.sh"   48 minutes ago      Up 15 seconds              0.0.0.0:80->80/tcp, 0.0.0.0:10051->10051/tcp, 162/udp, 10052/tcp   root_zabbix-server_1d3f65bdcb149        zabbix/zabbix-db-mariadb      "/run.sh"                48 minutes ago      Up 15 seconds              0.0.0.0:3306->3306/tcp                                             root_zabbix-db_146ddb7c1d0d7        ubuntu:14.04                  "/bin/bash"              8 weeks ago         Exited (137) 5 hours ago                                                                      sharp_raman1cf6125b550f        ubuntu:12.04                  "/bin/bash"              8 weeks ago         Exited (130) 8 weeks ago                                                                      big_mirzakhanic1ba487df40a        62b80c65d15b                  "/bin/sh -c mysqld"      6 months ago        Exited (1) 6 months ago                                                                       naughty_lovelace5743c82b6cba        62b80c65d15b                  "/bin/sh -c mysqld /b"   6 months ago        Exited (1) 6 months ago                                                                       awesome_leakey


2 0
原创粉丝点击