一、docker-compose的安装

1、安装

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y python2-pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose

2、检查是否安装成功

docker-compose -v

二、docker-compose案例

1、撰写docker-compose.yml文件

[root@luoahong mywordpress]# pwd
/opt/mywordpress
[root@luoahong mywordpress]# ll
total 4
-rw-r--r-- 1 root root 603 Jan 18 10:51 docker-compose.yml
[root@luoahong mywordpress]# cat docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- web_data:/var/www/html
ports:
- "80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
web_data:

2、启动容器

[root@luoahong mywordpress]# docker-compose up -d
Starting mywordpress_db_1 ... done
Starting mywordpress_wordpress_1 ... done
[root@luoahong mywordpress]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fdb12738746 wordpress:latest "docker-entrypoint.s…" 5 minutes ago Up 11 seconds 0.0.0.0:32769->80/tcp mywordpress_wordpress_1
72e1954332dc mysql:5.7 "docker-entrypoint.s…" 5 minutes ago Up 12 seconds 3306/tcp, 33060/tcp mywordpress_db_1
f82cd0895416 centos:6.9 "/bin/bash" 2 days ago Exited (255) 2 hours ago 0.0.0.0:80->80/tcp gifted_swirles

3、容器启动了什么网络

[root@luoahong mywordpress]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d766f2526542 bridge bridge local
30b37ec09ff2 host host local
ad2616372f01 mywordpress_default bridge local
03062097926d none null local

4、容器启动了什么数据卷

[root@luoahong mywordpress]# docker volume ls
DRIVER VOLUME NAME
local mywordpress_db_data
local mywordpress_web_data

5、动态增加容器

[root@luoahong mywordpress]# docker-compose scale wordpress=3
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Starting mywordpress_wordpress_1 ... done
Creating mywordpress_wordpress_2 ... done
Creating mywordpress_wordpress_3 ... done
[root@luoahong mywordpress]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc0548d44d4f wordpress:latest "docker-entrypoint.s…" 10 seconds ago Up 6 seconds 0.0.0.0:32771->80/tcp mywordpress_wordpress_3
2ca0fa1916be wordpress:latest "docker-entrypoint.s…" 10 seconds ago Up 6 seconds 0.0.0.0:32770->80/tcp mywordpress_wordpress_2
7fdb12738746 wordpress:latest "docker-entrypoint.s…" 6 minutes ago Up About a minute 0.0.0.0:32769->80/tcp mywordpress_wordpress_1
72e1954332dc mysql:5.7 "docker-entrypoint.s…" 6 minutes ago Up About a minute 3306/tcp, 33060/tcp mywordpress_db_1
f82cd0895416 centos:6.9 "/bin/bash" 2 days ago Exited (255) 2 hours ago 0.0.0.0:80->80/tcp gifted_swirles

6、测试截图

三、docker-compose.yml文件详解

1、全文注解

version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always #容器重启服务跟着自动重启
environment: #容器的环境变量
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on: #依赖db服务
- db
image: wordpress:latest
volumes: #创建数据圈
- web_data:/var/www/html
ports:
- "80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
web_data:

2、restart: always的作用

[root@oldboy ~]# docker run -d -p 5000:5000 --restart=always  -v /opt/myregistry:/var/lib/registry  registry
Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
[root@luoahong2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64842c29c697 registry "/entrypoint.sh /etc…" 28 minutes ago Up 28 minutes 0.0.0.0:5000->5000/tcp heuristic_montalcini
[root@luoahong2 ~]# systemctl restart docker
[root@luoahong2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64842c29c697 registry "/entrypoint.sh /etc…" 29 minutes ago Up 4 seconds 0.0.0.0:5000->5000/tcp heuristic_montalcini
[root@luoahong2 ~]# systemctl restart docker
[root@luoahong2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64842c29c697 registry "/entrypoint.sh /etc…" 29 minutes ago Up 1 second 0.0.0.0:5000->5000/tcp heuristic_montalcini

容器重启服务跟着自动重启

四、容器负载均衡搭建测试

1、编写测试文件

root@luoahong mywordpress]# docker volume ls
DRIVER VOLUME NAME
local mywordpress_db_data
local mywordpress_web_data
[root@luoahong mywordpress]# cd /var/lib/docker/volumes/mywordpress_web_data/_data/
[root@luoahong _data]# ll
total 196
-rw-r--r-- 1 33 33 418 Sep 25 2013 index.php
-rw-r--r-- 1 33 33 19935 Jan 7 2018 license.txt
-rw-r--r-- 1 33 33 7415 Mar 19 2018 readme.html
-rw-r--r-- 1 33 33 6878 Dec 13 09:30 wp-activate.php
drwxr-xr-x 9 33 33 4096 Dec 20 07:23 wp-admin
-rw-r--r-- 1 33 33 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 33 33 1889 May 3 2018 wp-comments-post.php
-rw-r--r-- 1 33 33 3154 Jan 18 11:21 wp-config.php
-rw-r--r-- 1 33 33 2764 Jan 18 11:21 wp-config-sample.php
drwxr-xr-x 4 33 33 52 Dec 20 07:23 wp-content
-rw-r--r-- 1 33 33 3669 Aug 20 2017 wp-cron.php
drwxr-xr-x 19 33 33 8192 Dec 20 07:23 wp-includes
-rw-r--r-- 1 33 33 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 33 33 3306 Aug 22 2017 wp-load.php
-rw-r--r-- 1 33 33 37296 Dec 13 08:28 wp-login.php
-rw-r--r-- 1 33 33 8048 Jan 11 2017 wp-mail.php
-rw-r--r-- 1 33 33 17421 Oct 23 15:04 wp-settings.php
-rw-r--r-- 1 33 33 30091 Apr 30 2018 wp-signup.php
-rw-r--r-- 1 33 33 4620 Oct 24 2017 wp-trackback.php
-rw-r--r-- 1 33 33 3065 Sep 1 2016 xmlrpc.php
[root@luoahong _data]# pwd
/var/lib/docker/volumes/mywordpress_web_data/_data
[root@luoahong _data]#
oot@luoahong _data]# vim info.php

<?php phpinfo(); ?>

2、部署nginx

[root@luoahong2 ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.CgAfYa: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-release-centos-7-0.el7.ngx ################################# [100%]
[root@luoahong2 ~]# yum install nginx -y

3、配置nginx文件

[root@luoahong2 ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream wordpress{
server 192.168.231.136:32769;
server 192.168.231.136:32770;
server 192.168.231.136:32771;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://wordpress;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
} [root@luoahong2 ~]# systemctl restart nginx.service
[root@luoahong2 ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18726/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1163/sshd
tcp6 0 0 :::22 :::* LISTEN 1163/sshd
tcp6 0 0 :::5000 :::* LISTEN 18307/docker-proxy
udp 0 0 0.0.0.0:68 0.0.0.0:* 15813/dhclient
udp 0 0 0.0.0.0:38159 0.0.0.0:* 15813/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 615/chronyd
udp6 0 0 :::26916 :::* 15813/dhclient
udp6 0 0 ::1:323 :::* 615/chronyd

4、容器负载均衡测试截图

Docker:单机编排工具docker-compose [十二]的更多相关文章

  1. 单机编排之Docker Compose

    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...

  2. Docker - 容器编排工具 compose 之安装

    准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 ...

  3. 使用容器编排工具docker swarm安装clickhouse多机集群

    1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker  swarm init [options] 3,再需 ...

  4. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  5. Docker编排工具Docker Compose的使用

    一.安装docker compose 官网推荐方式之一: sudo curl -L "https://github.com/docker/compose/releases/download/ ...

  6. Docker 容器编排利器 Docker Compose

    Compose 简介 通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器.然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如 ...

  7. Docker 与 K8S学习笔记(十 二)容器间数据共享

    数据共享是volume的关键特性,今天我们来看一下通过volume实现容器与host.容器与容器之间共享数据. 一.容器与host共享数据 在上一篇中介绍到的bind mount和docker man ...

  8. Docker容器编排工具——docker-compose

    1.docker-compose介绍 2.使用的三个步骤 3.安装docker-compose yum install docker-compose 4.docker-compose.yml 文件 ( ...

  9. 菜鸟教程之工具使用(十二)——Eclipse突出显示选中的相同变量

    大家都知道在Eclipse中,选中一个变量或者方法名(或者说是一个单词),当前文件中跟他一样的变量会被突出显示,这个功能很好用.能让我们很方便的找到该变量在哪被用到了.前段时间我的Eclipse的这个 ...

随机推荐

  1. Zabbix常见触发器表达式

    Zabbix trigger是zabbix 进行告警通知的设定条件 ,当监控获取的值触发了设定的条件时,会按照触发器的设定,执行相应的action 操作 .在zabbix中为了比较方便的设定各种条件, ...

  2. LeetCode算法题-Repeated String Match(Java实现)

    这是悦乐书的第289次更新,第307篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第156题(顺位题号是686).给定两个字符串A和B,找到A必须重复的最小次数,使得B是 ...

  3. 用 PLSQL 创建新用户及导入 dmp

    一.创建表空间 在导入 dmp 文件之前,你要在数据库里面给它分配一片存储它的地方(表空间). 如果我们知道需要导入的数据库的表空间直接创建就可以,如果不不知道,也没有关系,我们可以用 txt 打开 ...

  4. Django中的信号

    信号 Django 提供一个“信号分发器”,允许解耦的应用在框架的其它地方发生操作时会被通知到. 简单来说,信号允许特定的sender通知一组receiver某些操作已经发生. 这在多处代码和同一事件 ...

  5. SQL NOT NULL 约束

    SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值. NOT NULL 约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 下面的 SQ ...

  6. TensorRT&Sample&Python[network_api_pytorch_mnist]

    本文是基于TensorRT 5.0.2基础上,关于其内部的network_api_pytorch_mnist例子的分析和介绍. 本例子直接基于pytorch进行训练,然后直接导出权重值为字典,此时并未 ...

  7. Generative Adversarial Nets[BEGAN]

    本文来自<BEGAN: Boundary Equilibrium Generative Adversarial Networks>,时间线为2017年3月.是google的工作. 作者提出 ...

  8. iOS开发基础-九宫格坐标(3)之Xib

    延续iOS开发基础-九宫格坐标(2)的内容,对其进行部分修改. 本部分采用 Xib 文件来创建用于显示图片的 UIView 对象. 一.简单介绍  Xib 和 storyboard 的比较: 1) X ...

  9. Python dict和set的实现原理

    在python的dict中间进行查找某个key操作时,查找所需时间不会随着dict中键值对数量增多而变长,(时间复杂度为O(1))但是list中就会(时间复杂度为O(N)),这是因为list查询实现的 ...

  10. centos 6.8 nginx+mysql+php

    1:查看环境: [root@123 /]# cat /etc/redhat-release CentOS release 6.8 (Final) 2:关掉防火墙 [root@123 /]# chkco ...