Docker学习(十)Docker容器编排 Docker-compose

标签(空格分隔): docker


容器编排是什么

应用一般由单独容器化的组件组成,须按照一定顺序在网络级别进行组织,以使其能够按照计划运行,这种对多个容器进行组织的流程称为容器编排,它主要是对容器之间的依赖关系进行编排

Docke-compose

docker官方提供的工具,强调单机多容器的编排,能力相对有限,只能在一台宿主机上对容器编排,对于大规模集群环境中,多台机器无法支持,在windows, mac 安装完docker后默认提供docker-compose,但是在windows server , Linux中默认是不提供的,需要自行安装

示例场景

在一个简单的应用部署中,如图

需要用到 nginx , tomcat , mysql 三个组件,而且这每个组件在部署的时候是有依赖关系的,比如要先有mysql,因为tomcat中的应用需要使用到mysql,最后需要安装nginx,对tocmcat做负载均衡实现集群

顺序如下:mysql -> tomcat -> nginx

如果是人工处理的话,虽然简单,但是需要花费长时间, 现在有了docker-compose,就可以对容器进行编排,通过一个yml文件来维护容器编排的逻辑,再通过docker-compose命令对配置文件进行编译解析,就可以实现一个应用的部署

接下来我们使用docker-compose 部署一个开源博客wordpress

示例一 搭建wordpress开源博客

整个过程比较简单

安装docker-compose

  • 获取并自动安装docker-comppose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    默认安装目录是/usr/local/bin/docker-compose

  • 文件夹授权

    sudo chmod +x /usr/local/bin/docker-compose

    因为要连接国外网站,下载会很慢,可能会被拒绝,多试几次就好

  • 查看安装的版本

    docker-compose -version

安装部署开源博客wordpress

创建目录mkdir -p /usr/local/docker/wordpress

  • 编写docker-compose 配置文件
version: '3.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
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
  • 配置文件解读

  • 解析配置文件并安装 docker-compose up -d

    • up 解析执行
    • -d 后台运行

  • 执行过程
Creating network "wordpress_default" with the default driver

Creating volume "wordpress_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
......
Status: Downloaded newer image for mysql:5.7 Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
......
Creating wordpress_db_1 ... done
Recreating wordpress_wordpress_1 ... done
  • 查看创建的应用

    docker ps



    wordpress_wordpress_1 博客的web应用

    wordpress_db_1 博客的mysql5.7容器

初始化wordpress

从上面进程看到WEB应用对外暴露的是8000端口

http://宿主机ip:8000 对博客进行一下初始化

到这里都是个应用上的一些流程,有兴趣的可以体验一下这个博客,很不错的

成果展示

到这里我们已经完成了开源博客的部署, 整个过程很简单,整个过程是由docker-compose 这个容器编排工具完成的,通过一个yml配置文件 ,就完成了一个应用的部署,很大节省了运维人员工作量,整个应用的维护,只需要一个yml配置文件

参考资料

docker-compose-install

QuickStart : compose and wordpress

写在最后

通过docker-compose部署自己的应用时里面有很多东西,本文的例子一个很简单,实际工作中一定不止于此,docker-compose文件中的内容有很多学问,可以到docker官网上看一下,以mysql为例,如果指定初始化数据库的脚本,root用户的密码如何指定等,这块需要用到mysql容器的一些环境变量,这块内容可以参考docker-mysql

相关文章会首发公众号,可以关注公号albk,关注后可以获取大量学习视频

期望热爱技术的你一起来交流,获取最新资料和学习资源,可以关注公众号albk, 个人博客 !

Docker学习(十)Docker容器编排 Docker-compose的更多相关文章

  1. Docker学习之3——容器

    容器(Container) 容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的.容器其实就是从镜像创建的一个实例. 我们可以对容器进行增删改查,容器之间也是相互隔离的.和 ...

  2. Docker学习(三)认识Docker和常用命令

    Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...

  3. Docker知识进阶与容器编排技术

    目录 1 使用Dockerfile定制redis镜像 1.1 环境准备 1.2 编写Dockerfile文件 1.3 通过Dockerfile构建镜像 1.4 通过镜像运行容器 1.5 官方镜像替代我 ...

  4. Docker学习笔记——制作容器与容器概念

    Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...

  5. 【开发工具 docker】值得学习的应用容器引擎docker安装

    概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...

  6. docker学习笔记:容器的网络设置

    创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...

  7. Docker学习总结(4)——Docker镜像与容器命令

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...

  8. Docker学习第二天-容器

    Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 ...

  9. 【转】Docker学习_本地/容器文件互传(5)

    将容器内文件拷贝到宿主机 docker cp <containerId>:/导出文件的位置/xxx.sql /宿主机的位置 示例:docker cp bf4c4fff338c:/root/ ...

  10. docker学习笔记(2)——docker常用命令

    参考博客: 1.官网教程:https://docs.docker.com/reference/ 可以一边敲命令一边对照官网学习,也可以通过阅读docker --help来学习 2..视频教程:http ...

随机推荐

  1. JOISC2014 Day2 E "交朋友" (思维+假的SCC)

    传送门 题目描述 你是活跃在历史幕后的一名特工,为了世界和平而夜以继日地努力着. 这个世界有N个国家,编号为1..N; 你的目的是在这N个国家之间建立尽可能多的友好关系. 你为了制定一个特工工作的计划 ...

  2. P1003 电影票价

    题目描述 已知一位小朋友的电影票价是10元,请问 \(n\) 位小朋友的总票价是多少? 输入格式 输入一个整数 \(n(1 \le n \le 1000)\) , 用于表示小朋友的数量. 输出格式 输 ...

  3. 改善Azure App Service托管应用程序性能的几个技巧

    本文介绍了几个技巧,这些技巧可以改善Azure App Service托管应用程序的性能.其中一些技巧是你现在就可以进行的配置变更, 而其他技巧则可能需要对应用程序进行一些重新设计和重构. 开发者都希 ...

  4. dotnet 线程静态字段

    在 dotnet 程序提供了一个好用的特性,可以让字段作为线程的静态字段,也就是在相同线程的所有代码访问的静态字段是相同对象,但不同线程访问的时候是不同的 在 .NET 程序可以使用 ThreadSt ...

  5. 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)

    牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...

  6. 修改Samba密码后无法登录

    Samba修改用户名密码后,无法登陆 之后每次进去都是以这样的username和passwd进去的,如何才能使用其他的用户来重新登录samba server呢? 首先使用在开始菜单里面输入cmd: 进 ...

  7. Vue通讯

    vue组件通讯 #props传递数据 父->子 //父组件传递数据 <template> <Children :data="msg"></Chi ...

  8. 37.html

    转载:https://www.cnblogs.com/yuanchenqi/articles/5976755.html 前端概述 import socket def main(): sock = so ...

  9. 005 Ceph配置文件及用户管理

    一.Ceph的配置文件 Ceph 配置文件可用于配置存储集群内的所有守护进程.或者某一类型的所有守护进程.要配置一系列守护进程,这些配置必须位于能收到配置的段落之下.默认情况下,无论是ceph的服务端 ...

  10. Acunetix 11 配置详解

    Acunetix 扫描配置 Full Scan– 使用Full Scan来发起一个扫描的话,Acunetix会检查所有可能得安全漏洞. High Rish Vulnerabilities–这个扫描选项 ...