Docker:单机编排工具docker-compose [十二]
一、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 [十二]的更多相关文章
- 单机编排之Docker Compose
当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...
- Docker - 容器编排工具 compose 之安装
准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 ...
- 使用容器编排工具docker swarm安装clickhouse多机集群
1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker swarm init [options] 3,再需 ...
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- Docker编排工具Docker Compose的使用
一.安装docker compose 官网推荐方式之一: sudo curl -L "https://github.com/docker/compose/releases/download/ ...
- Docker 容器编排利器 Docker Compose
Compose 简介 通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器.然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如 ...
- Docker 与 K8S学习笔记(十 二)容器间数据共享
数据共享是volume的关键特性,今天我们来看一下通过volume实现容器与host.容器与容器之间共享数据. 一.容器与host共享数据 在上一篇中介绍到的bind mount和docker man ...
- Docker容器编排工具——docker-compose
1.docker-compose介绍 2.使用的三个步骤 3.安装docker-compose yum install docker-compose 4.docker-compose.yml 文件 ( ...
- 菜鸟教程之工具使用(十二)——Eclipse突出显示选中的相同变量
大家都知道在Eclipse中,选中一个变量或者方法名(或者说是一个单词),当前文件中跟他一样的变量会被突出显示,这个功能很好用.能让我们很方便的找到该变量在哪被用到了.前段时间我的Eclipse的这个 ...
随机推荐
- Centos7安装搭建NTP服务器和NTP客户端同步时间
NTP简介: NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 在计算机的世界里,时间非常地重要 例如:对于火箭发射这种科研活动,对时间的 ...
- Saltstack_使用指南07_远程执行-执行模块
1. 主机规划 远程执行教程文档 https://docs.saltstack.com/en/latest/topics/tutorials/modules.html 所有模块文档 https://d ...
- VMware实现iptables NAT及端口映射
1. 前言 本文只讲解实战应用,不会涉及原理讲解.如果想要了解iptables的工作流程或原理可参考如下博文. 具体操作是在PC机的VMware虚拟机上进行的,因此涉及的地址都是内网IP.在实际工作中 ...
- LeetCode算法题-Kth Largest Element in a Stream(Java实现)
这是悦乐书的第296次更新,第315篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第164题(顺位题号是703).设计一个类来查找流中第k个最大元素.请注意,它是排序顺序 ...
- nysql报错1136
报错信息:> 1136 - Column count doesn't match value count at row 1 代码:insert into class(caption) value ...
- 通过ip查询自己电脑的共享文件夹
查看电脑所有的共享文件或文件夹的三种方法如下: 方法一. 右键点击网上邻居,点击属性进入网上邻居属性页面. 选中本地连接,在窗口的左下方有详细信息,可以看到内网IP,记住IP地址. 直接在地址栏输入记 ...
- Java Scala 混合编程导致 编译失败 ,【找不到符号】问题解决
大致就是 工程里分了 java 代码 和 scala 代码. 然后在java代码中 引用了 scala 的代码. 运行不报错. 但是打包就是一直报错. [ERROR] Failed to execut ...
- springboot aop + logback + 统一异常处理 打印日志
1.src/resources路径下新建logback.xml 控制台彩色日志打印 info日志和异常日志分不同文件存储 每天自动生成日志 结合myibatis方便日志打印(debug模式) < ...
- day18-网络编程基础(一)
勿骄勿燥,还是要定下心学习,还有有些没定下心 1.基础知识 2.tcp与udp协议 3.网络套接字 4.基于c/s结构的服务器客户端的实验 开始今日份总结 1.基础知识 现有的软件,绝大多数是基于C/ ...
- pytorch实现性别检测
卷积神经网络的训练是耗时的,很多场合不可能每次都从随机初始化参数开始训练网络. 1.训练 pytorch中自带几种常用的深度学习网络预训练模型,如VGG.ResNet等.往往为了加快学习的进度,在 ...