当前位置: 首页 > news >正文

Docker-compose

一.Docker-compose概述

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。

一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。

在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理

二.YAML文件格式以及编写注意事项

YAML是一种标记语言,它可以很直观的展示数据序列化格式可读性高。类似于XML数据描述语言,语法比XML简单的很多。

YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号【】

括起来,hash用花括号 {} 括起来。

三.Docker Compose配置常用字段

no, 默认策略,在容器退出时不重启容器

on-failure,在容器非正常退出时(退出状态非0),才会重启容器

on-failure:3, 在容器非正常退出时重启容器,最多重启3次

always,在容器退出时总时重启容器

unless-stopped, 在容器退出时总是重启容器,但是不考虑早Docker守护进程启动时就已经停止了容器

四.Docker Compose常用命令

五.Docker Compose文件结构

六.compose部署

6.1 Docker Compose环境安装

Docker Compose是Docker的独立产品,因此需要安装Docker之后在单独安装Docker Compoe

#下载在Linux上我们可以从Github上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose- uname -s -uname -m -o /usr/local/bin/docker-compose  

#安装

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

#查看版本

docker-compose --version  

chmod +x docker-compose

mv docker-compose /usr/local/bin/

docker-compose --version

6.2 compose部署nginx

6.2.1 准备依赖文件

mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot

cd /opt/compose_nginx/nginx

cp nginx-1.12.0.tar.gz ./

vim run.sh

#!/bin/bash

/usr/local/nginx/sbin/nginx

vim Dockerfile

#基于基础镜像

FROM centos:7

#用户信息

MAINTAINER this is nginx image <wl>

#添加环境包

RUN yum -y update

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make

RUN useradd -M -s /sbin/nologin nginx

#上传nginx软件压缩包,并解压

ADD nginx-1.12.0.tar.gz /usr/local/src/

#指定工作目录

WORKDIR /usr/local/src/nginx-1.12.0

RUN ./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module && make && make install

ENV PATH /usr/local/nginx/sbin:$PATH

#指定http和https端口

EXPOSE 80

EXPOSE 443

//方法一:

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行

#添加宿主机中run.sh到容器中

ADD run.sh /run.sh

RUN chmod 755 /run.sh

CMD ["/run.sh"]

//方法二:

ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html 

6.2.2 编写配置文件docker-compose-yml

version: '3'

services:

nginx:

build:

context: ./nginx

dockerfile: Dockerfile

container_name: nginx

Message from syslogd@localhost at Jul 11 22:41:57 ...

kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1

- 1217:443

networks:

lnmp:

ipv4_address: 192.168.2.22

volumes:

- ./nginx/wwwroot:/usr/local/nginx/html

networks:

lnmp:

driver: bridge

ipam:

config:

- subnet: 192.168.2.0/16

cd /opt/compose_nginx/

docker-compose -f docker-compose.yml up -d

----------------------------------------------------------------------------------------------------------

-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml

-p, --project-name NAME :指定项目名称,默认使用目录名称

-d :在后台运行

----------------------------------------------------------------------------------------------------------

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b48dceee248f compose_nginx_nginx "/run.sh" About a minute ago Up About a minute 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1

cd /opt/compose_nginx/

docker-compose ps #必须在docker-compose.yml所在目录执行此命令  

http://www.lryc.cn/news/2032.html

相关文章:

  • 经典文献阅读之--PLC-LiSLAM(面,线圆柱SLAM)
  • 计算组合数Cnk即从n个不同数中选出k个不同数共有多少种方法math.comb(n,k)
  • 工厂设计模式
  • IO多路转接 —— poll和epoll
  • 计算机网络整理-问答
  • JS 实现抛物线动画案例
  • CSGO搬砖项目,23年最适合小白的项目!
  • 谈谈会话管理
  • Linux查看JVM FULL GC频率
  • java世界String的那些事
  • 【图像配准】多图配准/不同特征提取算法/匹配器比较测试
  • 2023金三银四季跳槽季,啃完这软件测试面试题,跳槽不就稳稳的了
  • 【C++详解】——vector类
  • uniapp 离线本地打包
  • 初识马尔科夫模型(Markov Model)
  • CentOS7 ifconfig(或 ip addr)命令不显示IP地址
  • 2023/2/10总结
  • 2023最新版!宝塔面板Docker自建Bitwarden密码管理
  • 【Hello Linux】 Linux基础命令
  • 151、【动态规划】leetcode ——2. 01背包问题:二维数组+一维数组(C++版本)
  • 2023-02-09 - 3 Elasticsearch基础操作
  • 云原生系列之使用 prometheus监控MySQL实战
  • 电脑分盘怎么分?分盘详细教程来了,图文教学
  • Element UI框架学习篇(四)
  • Revit快速材质切换:同一墙面赋予不同材质的方法
  • 【Linux operation 56】Linux 系统验证端口连通性
  • @Valid注解配合属性校验注解完成参数校验并且优化异常处理
  • 每天一道大厂SQL题【Day08】
  • 朗润国际期货:2023/2/10今日期市热点及未来焦点
  • TLV73312PQDRVRQ1稳压器TPS622314TDRYRQ1应用原理图