Docker之九---容器编排工具Docker Compose详解
1、Docker Compose 概述
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。
Compose非常适合开发,测试和登台环境以及CI工作流程。
(1)官方文档
(2)使用Compose基本上是一个三步过程
- 定义您的应用程序环境,Dockerfile以便可以在任何地方进行复制。
- 定义构成应用程序的服务,docker-compose.yml以便它们可以在隔离环境中一起运行。
- 最后,运行docker-compose up和Compose将启动并运行整个应用程序。
(3)一个 docker-compose.yml 文件案例:
version: '2' services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: redis
有关Compose文件的详细信息,请参阅 Compose文件参考。
(4)Compose具有管理应用程序整个生命周期的命令:
- 启动,停止和重建服务
- 查看正在运行的服务的状态
- 流式传输运行服务的日志输出
- 在服务上运行一次性命令
2、Docker Compose 安装
2.1 安装条件
(1)前提
Docker Compose 依靠Docker Engine 进行任何有意义的工作,因此请确保您已在本地或远程安装Docker Engine,具体取决于您的设置。
要以非root用户身份运行Compose,请参阅以非root用户身份管理Docker。
(2)安装系统(主要讲linux、pip安装)
- Linux
- Mac
- Windows
- 备用安装选项(使用pip安装/安装为容器)
2.2 在Linux系统上安装Compose
(1)下载安装
在gitlab https://github.com/docker/compose/releases 上查询适合自己的版本
我这里下载的是1.23.2 版本
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
(2)添加执行权限
$ chmod +x /usr/local/bin/docker-compose
(3)安装完成,查询版本
$ docker-compose --version docker-compose version 1.23.2, build 1110ad01
2.2 Docker Compose 升级
如果从Compose 1.2或更早版本升级,请在升级Compose后删除或迁移现有容器。这是因为,从版本1.3开始,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。
如果Compose检测到没有标签创建的容器,它将拒绝运行,因此您最终不会使用两组。如果要继续使用现有容器(例如,因为它们具有要保留的数据卷),可以使用Compose 1.5.x使用以下命令迁移它们:
# docker-compose migrate-to-labels
或者,如果您不担心保留它们,可以将它们删除。撰写只是创建新的。
# docker container rm -f -v myapp_web_1 myapp_db_1 ...
2.3 Docker Compose 卸载
正常系统安装卸载:
# sudo rm /usr/local/bin/docker-compose
pip安装卸载:
# pip uninstall docker-compose
单机编排之Docker Compose
环境准备:
A主机:192.168.7.100
B主机:192.168.7.102
C主机:192.168.7.103
1、安装python环境、pip命令以及docker-compose包
# yum install python-pip -y # pip install --upgrade-pip # pip install docker-compose
2、在C主机启动harbor服务,然后创建一个项目:linux(harbor安装过程见https://www.cnblogs.com/struggle-1216/p/12197845.html)
[root@openstack harbor]# docker-compose start Starting log ... done Starting registry ... done Starting registryctl ... done Starting postgresql ... done Starting adminserver ... done Starting core ... done Starting portal ... done Starting redis ... done Starting jobservice ... done Starting proxy ... done
在配置文件中修改文件,作为开机启动
[root@openstack harbor]# pwd /usr/local/src/harbor [root@openstack harbor]# vim /etc/rc.d/rc.local #修改rc.local配置文件 cd /usr/local/src/harbor && docker-compose start [root@openstack harbor]# chmod +x /etc/rc.d/rc.local #加上执行权限
2、在A主机将之前创建的haproxy镜像打标签并传到harbor上。
[root@centos-7 src]# docker tag centos-haproxy:v1.8.17 192.168.7.103/linux/centos-haproxy:v1.8.17 #给haproxy打标签 [root@centos-7 src]# docker login 192.168.7.103 #登陆harbor服务 Username: admin Password: [root@centos-7 src]# docker push 192.168.7.103/linux/centos-haproxy:v1.8.17 #将haproxy上传到harbor上
基于docker-compose搭建wordpress
1、创建compose.yml文件
1、在指定的目录下创建compose.yml文件
[root@dockerwordpress]#cat docker-compose.yml version: '3.3' services: wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_files:/var/www/html ports: - "8080:80" # 指定宿主机的端口号,左边时宿主机的暴露端口号,右边是容器暴露端口号 restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wpdb # 指定数据库名称 WORDPRESS_DB_USER: wpuser # 指定wordpass名称 WORDPRESS_DB_PASSWORD: wppass # 指定wordpass名称 db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: centos # 指定数据库密码 MYSQL_DATABASE: wpdb # 指定数据库名称,与上面一致 MYSQL_USER: wpuser # 与上面的wordpass名称一致 MYSQL_PASSWORD: wppass # 与上面指定名称一致 volumes: wordpress_files: db_data:
2、拉取数据库和wordpass镜像
# docker pull wordpress # docker pull mysql:5.7
3、启动创建的wordpass
[root@dockerwordpress]#docker-compose up -d # 第一次启动使用up选项,-d是在后台启动容器 Creating network "wordpress_default" with the default driver Creating volume "wordpress_wordpress_files" with default driver Creating wordpress_db_1 ... done Creating wordpress_db_1 ... Creating wordpress_wordpress_1 ... done
4、在网页上访问查看效果
1、访问192.168.7.101:8080的URL,此时就会就会访问wordpress