当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种编排服务,docker compose是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,就像启动一个web就必须得先把数据库服务先启动一样,docker compose 完全可以替代docker run启动容器。
#github 地址https://github.com/docker/compose
1.1:基础环境准备:
1.1.1:安装python环境及pip命令:
root@host-172-16-99-151:~# apt-get install python-pip -y
root@host-172-16-99-151:~# pip install --upgrade pip
注:centos系统的操作如下
# yum install https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm -y
# yum install python-pip -y
# pip install --upgrade pip
1.1.2:安装docker compose:
root@host-172-16-99-151:~# apt-get install docker-compose
注:centos系统 yum install -y docker-compose
1.1.3:验证版本:
root@host-172-16-99-151:~# docker-compose version
1.1.4:查看帮助:
root@host-172-16-99-151:~# docker-compose --help
1.2:从 docker compose启动单个容器:
目录可以在任意目录,推荐放在有意义的位置。
root@host-172-16-99-151:~# mkdir docker-compose
root@host-172-16-99-151:~# cd docker-compose/
1.2.1:一个容器的docker compose文件:
设置一个yml格式的配置文件,因此要注意前后的缩进。
root@host-172-16-99-151:~/docker-compose# cat docker-compose.yml
web1:
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
ports:
- "80:80"
- "443:443"
注:方便配置粘贴的小技巧
# echo 'set paste' > .vimrc
1.2.2:启动容器:
必须要在docker compose文件所在的目录执行:
root@host-172-16-99-151:~/docker-compose# docker-compose up #前台启动
1.2.3:启动完成:
![]()
1.2.4:web访问测试:
![]()
1.2.5:后台启动服务:
#容器的在启动的时候,会给容器自定义一个名称
root@host-172-16-99-151:~/docker-compose# docker-compose up -d
1.2.6:自定义容器名称:
root@host-172-16-99-151:~/docker-compose# cat docker-compose.yml
web1:
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
container_name: nginx-web1 #自定义容器名称
ports:
- "80:80"
- "443:443"
更改docker compose里面的容器名称后在启动容器,会重新初始化容器并更改容器名称
![]()
1.2.7:验证容器:
![]()
1.2.8:查看容器进程:
root@host-172-16-99-151:~/docker-compose# docker-compose ps
![]()
1.3:从docker compose启动多个容器:
1.3.1:编辑docker-compose文件:
root@host-172-16-99-151:~/docker-compose# cat docker-compose.yml
web1:
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
container_name: nginx-web1
ports:
- "80:80"
- "443:443"
web2: #每一个容器一个ID
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
container_name: nginx-web2
ports:
- "81:80"
- "444:443"
1.3.2:重新启动容器:
root@host-172-16-99-151:~/docker-compose# docker-compose stop
root@host-172-16-99-151:~/docker-compose# docker-compose up –d
![]()
7.3.3:web访问测试:
![]()
![]()
1.4:定义数据卷挂载:
1.4.1:创建数据目录和文件:
root@host-172-16-99-151:~# mkdir -p /data/nginx
root@host-172-16-99-151:~# echo "Test Nginx Volume" > /data/nginx/index.html
1.4.2:编辑compose配置文件:
root@host-172-16-99-151:~/docker-compose# vim docker-compose.yml
web1:
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
container_name: nginx-web1
volumes:
- /data/nginx:/usr/share/nginx/html
ports:
- "80:80"
- "443:443"
web2:
image: 172.16.99.148/baseimages/nginx:v2
expose:
- 80
- 443
container_name: nginx-web2
ports:
- "81:80"
- "444:443"
1.4.3:重启容器:
root@host-172-16-99-151:~/docker-compose# docker-compose stop
root@host-172-16-99-151:~/docker-compose# docker-compose up -d
![]()
![]()
1.4.4:验证web访问:
![]()
#可以发现,同一个文件,数据卷的优先级比镜像内的文件优先级高
![]()
1.4.5:其他常用命令:
1.4.5.2:重启所以容器:
root@host-172-16-99-151:~/docker-compose# docker-compose restart
1.4.5.3:停止和启动单个容器:
root@host-172-16-99-151:~/docker-compose# docker-compose stop web1
root@host-172-16-99-151:~/docker-compose# docker-compose start web1
1.4.5.4:停止和启动所有容器:
root@host-172-16-99-151:~/docker-compose# docker-compose stop
root@host-172-16-99-151:~/docker-compose# docker-compose start
- Docker 容器编排利器 Docker Compose
Compose 简介 通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器.然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如 ...
- 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 compose 安装 tidb
目标 : 单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群 前提条件: 1.centos版本在7.3 以上 2.安装git 3.安装docker Docker versi ...
- 使用 Docker Compose 快速构建 TiDB 集群
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...
- Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis
环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db redis web nginx NET Core 6+MySQL 8+N ...
- Docker Compose容器编排
Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...
- Docker Compose 容器编排
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- Docker(二十六)-Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
随机推荐
- kakafka - 为CQRS而生fka - 为CQRS而生
前段时间跟一个朋友聊起kafka,flint,spark这些是不是某种分布式运算框架.我自认为的分布式运算框架最基础条件是能够把多个集群节点当作一个完整的系统,然后程序好像是在同一台机器的内存里运行一 ...
- J2EE基本概念
XO POJO:Plain Ordinary Java Object,简单java对象 PO:Persistant Object,持久层对象(对应数据库中一条记录) BO:Business Objec ...
- Beta冲刺随笔——Day_Three
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...
- jquery on 动态生成绑定事件
$(document).on("mouseenter", ".v6-div-kind-ok", function () { alert();});
- 安卓学习02---room
title: 安卓学习02---room date: 2020-02-02 18:20:13 tags: room是jetpack的组件,可以使程序流畅的访问sqlite. <!--more - ...
- CSS初识- 选择器 &背景& 浮动& 盒子模型
# CSS初识-目标: > 1. 学会使用CSS选择器 > 2. 熟记CSS样式和外观属性 > 3. 熟练掌握CSS各种基础选择器 > 4. 熟练掌握CSS各种复合选择器 &g ...
- git .gitignore 忽略列表
#: 注释 # no .a files * .a //忽略以 .a结尾的 文件 # ... ! lib .a // 忽略 非 lib.a的文件 /TODO //忽略当前目录 文件名位 ...
- uni与小程序,vue的区别
标签区别 uni使用小程序的标签,vue使用web端的标签 标签名变化的: 标签描述\类别 vue uniapp 文本 span\font text 链接 a navigator/ router-li ...
- Day2 【Scrum 冲刺博客】
每日会议总结 昨天已完成的工作 方晓莹(PIPIYing) 新增人员管理页面的开发 静态页面的进一步完善 方子茵(Laa-L) 完成车辆查询接口 黄芯悦(Sheaxx) 新增社区通知页面 新增社区活动 ...
- 《Eroico》关卡与操作设计
操作设计: 没有给明操作教程,操作全靠蒙,只有改建的位置可以看到. 但游戏的难度并没有给玩家适应操作感,随着难度提升怪物血量增厚,但怪物并没有僵直英雄却有僵直.第一个小猫妖便给了玩家一个痛击. 方向键 ...