四、docker compose
docker compose可以方便我们快捷高效地管理容器的启动、停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。
1、安装 docker-compose
- sudo pip install -U docker-compose
2、创建docker-compose.yml文件
#Docker:组合
###定义服务
vi docker-compose.yml
指定内容
- version: '2'
- services:
- phoenix:
- image: nginx
- ports:
- - "8080:80"
- dragon:
- image: nginx
- ports:
- - "8081:80"
3、启动服务
- // 启动服务
- docker-compose up
- // 通过浏览器访问 http://192.168.99.100:8080/ http://192.168.99.100:8081/
- // 回到终端,这里会显示容器里面的一些日志,每条日志的前面会标注一下这个日志来自哪一个服务容器,ctrl+c可以停止它们,这些服务我们可以让它在后台去运行
- docker-compose up -d
- // 查看一下正在运行的容器
- docker ps
4、常用操作
- // 查看应用的服务
- docker-compose ps
- // 停止phoenix服务
- docker-compose stop phoenix
- // 停止所有在docker-compose.yml文件中定义的服务
- docker-compose stop
- // 重新启动phoenix服务
- docker-compose start phoenix
- // 启动所有服务
- docker-compose start
- // 查看服务的日志
- docker-compose logs
- // 持续跟踪服务日志的变化
- docker-compose logs -f
- // 登录到phoenix服务容器中
- docker-compose exec phoenix bash
- // 要删除应用的服务需要先把它们都停止掉
- docker-compose stop
- // 删除所有服务的容器
- docker-compose rm
- // 注意rm不会删除掉创建的网络还有数据卷
- docker network ls
- // 这里的ninghaodocker_default就是我们的应用创建一个网络
- // 如果想要删除所有的这些东西的话,可以使用
- docker-compose down
- docker network ls
注意:
###网络
网络决定了服务之间还有外界跟服务之间怎么样去进行沟通,在执行docker-compose up的时候,docker会给我们创建一个默认的网络,所有的服务也会属于这个默认的网络,服务跟服务之间可以使用服务的名字进行相互的通信,我们也可以创建自己的网络,然后让指定的服务加入到我们自己创建的这些网络里面,那么这样的话属于这个网络的服务之间可以进行通信,网络以外的服务就不能够去跟它们进行通信了, 这样的话会对这个服务有一个隔离的作用,让应用更安全一些
###定义网络
- version: '2'
- services:
- phoenix:
- image: nginx
- ports:
- - "8080:80"
- networks:
- - "fairyland"
- dragon:
- image: nginx
- ports:
- - "8081:80"
- networks:
- - "fairyland"
- monkey:
- image: nginx
- ports:
- - "8082:80"
- networks:
- - "default"
- networks:
- fairyland:
- driver: bridge
- docker-compose up -d
- docker-compose exec phoenix bash
- ping dragon
- exit
- docker-compose exec dragon bash
- ping phoenix
- // 重新启动服务
- docker-compose up -d
- docker-compose exec phoenix bash
- ping dragon
- ping monkey
- // dragon能ping通,monkey不能ping通
###命名的数据卷
- version: '2'
- services:
- phoenix:
- image: nginx
- ports:
- - "8080:80"
- networks:
- - "fairyland"
- volumes:
- - nest:/mnt
- dragon:
- image: nginx
- ports:
- - "8081:80"
- networks:
- - "fairyland"
- volumes:
- - nest:/mnt
- monkey:
- image: nginx
- ports:
- - "8082:80"
- networks:
- - "default"
- networks:
- fairyland:
- driver: bridge
- volumes:
- nest:
- driver: local
- 具体可查看
- docker-compose up -d
- docker-compose exec phoenix bash
- cd /mnt
- touch phoenix_data_1
- ls
- exit
- docker-compose exec dragon bash
- cd /mnt
- ls
###指定位置的数据卷
docker-compose.yml
- version: '2'
- services:
- phoenix:
- image: nginx
- ports:
- - "8080:80"
- networks:
- - "fairyland"
- volumes:
- - nest:/mnt
- - ./app/web:/usr/share/nginx/html
- dragon:
- image: nginx
- ports:
- - "8081:80"
- networks:
- - "fairyland"
- volumes:
- - nest:/mnt
- - ./app/web:/usr/share/nginx/html
- monkey:
- image: nginx
- ports:
- - "8082:80"
- networks:
- - "default"
- networks:
- fairyland:
- driver: bridge
- volumes:
- nest:
- driver: local
四、docker compose的更多相关文章
- Docker(四):Docker 三剑客之 Docker Compose
前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...
- Docker compose学习笔记
一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...
- Docker Compose容器编排
Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- Docker学习笔记 - Docker Compose 脚本命令
Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...
- Docker学习笔记 - Docker Compose
一.概念 Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器). 使用Docker Compose 的步骤: 定义容器 Dockerfile 定义应用的各个服 ...
- Docker & ASP.NET Core (5):Docker Compose
第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 Docker Compose简介 Compose是一个用来定义和运行多容器Docker应用的工具.使用C ...
- Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
随机推荐
- day1-pycharm使用
1.Ctrl+滑轮 字体大小 2.改变字体大小 3.开头模板 4.多行注释 ctrl+? 5.切换Python版本解释器
- 强大的原生DOM选择器querySelector和querySelectorAll
在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...
- MyOD 代码实现
MyOD的代码实现 一.题目要求: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 二.设计思路 OD命令详解: 因此,该题目所要实现的功能为以 ...
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(数据库简单说明)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(视频总揽) 这里有个教程 http://www.cnblogs.com/best/p/6517755.h ...
- log4net配置文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSec ...
- Java调用FFmpeg进行视频处理及Builder设计模式的应用
1.FFmpeg是什么 FFmpeg(https://www.ffmpeg.org)是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它用来干吗呢?视频采集.视频格式转化.视频 ...
- 几种content-type提交以及$_POST 和php://input
在表单提交数据时,需要告诉服务端自己的content-type,好让服务端处理. 默认表单提交是x-www-form-urlencoded,还有一种常见的 multipart/form-data.那这 ...
- Git创建项目基本命令
前提:先在coding.net上创建项目Paper,并勾选“启用README.md文件”初始化项目. 1.给项目Paper创建版本库(仓库) cd Paper git init 2.把项目文件放到仓库 ...
- Autofac容器对象实例的几种生命周期类型
实例范围决定了如何在同一服务的请求之间共享实例. 请注意,您应该熟悉生命周期范围的概念,以便更好地理解此处发生的情况. 当请求服务时,Autofac可以返回单个实例(单实例作用域),新实例(每个依赖作 ...
- Windows Community Toolkit 4.0 - DataGrid - Overview
概述 Windows Community Toolkit 4.0 于 2018 月 8 月初发布:Windows Community Toolkit 4.0 Release Note. 4.0 版本相 ...