7.Docker-compose

这篇具有很好参考价值的文章主要介绍了7.Docker-compose。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker-compose

概念

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

  • Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。

  • Docker-Compose是一个容器编排工具。

  • 通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器。

  • Docker compose 文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服条定义了容器应该执行的任务,以及容器之间的统赖关系。

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

  • Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。

  • 一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。

  • Docker-compose总结

    • 实现单机容器集群编排管理(使用YAML模板文件定义多个应用容器的启动参数和依赖关系,并使用Docker-compose来根据模板文件的配置来启动容器)
  • 三大概念(包含关系)

    • 项目/工程
      • 默认使用目录名做项目名
      • 支持 -p 或 --project-name 来指定项目名
      • 在项目的目录中会包含一个docker-compose.yml 模板文件此文件为项目的默认配置文件(支持使用 -f 或 COMPOSE_FILE 来指定项目的配置模板文件)
      • 在配置文件里面可以定义一个或多个服务,每个服务可以包含容器的名称、镜像、端口映射、依赖关系、环境变量、挂载点等配置参数
    • 服务
    • 容器

Docker-compose部署

##Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 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 /opt/docker-compose

mv /opt/docker-compose /usr/local/bin/docker-compose

##查看版本
docker-compose --version
##能查看到则,安装成功

7.Docker-compose,11.Docker,docker,eureka,容器

YAML文件格式和编写注意事项

注意

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。

类似于 json 数据描述语言,语法比 json 简单的很多。

YAML 数据结构通过缩进来表示,
连续的项目通过减号来表示,
键值对用冒号分隔,
数组用中括号 [] 括起来, 
hash 用花括号 {} 括起来。
使用 YAML 时需要注意下面事项:

大小写敏感

通过缩进表示层级关系

不支持制表符 tab 键缩进,只能使用空格缩进

缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格

用 # 号注释

符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 

如果包含特殊字符用单引号('')引起来会作为普通字符串处理,
双引号(""): 特殊字符作为本身想表示的意思

数据结构

对象映射
对象映射: 键值对的字典
animal: dogs
序列属组
序列属组: 一组按次序排列的列表


##竖列表
pets:
- Cat
- Dog
- Pig

##横列表
pets: ["cat", "dog", "pig"]
布尔值
##布尔值


debug: true
debug: false
序列的映射
##序列的映射

pets:
 -  Cat
 -  Dog
 -  Pig
映射的映射
##映射的映射

websetting:
  cpu: 2
  memory: 1024M
  swap: 2048M
  disk: 60G
JSON格式
##JSON格式

{
    pets: [
        "cat",
        "dog",
        "pig"
    ],
    websetting: {
        cpu: ['2'],
        memory: ['1024M'],
        disk: ['60G']
    }
}
文本换行
# 注意“|”与文本之间须另起一行
# 使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行


value: |
  hello
  world!
  
  
# 输出结果
# hello 换行 world!!
# 注意“>”与文本之间的空格
# 使用>标注的文本内容缩进表示的块,将块中回车替换为空格最终连接成一行


value: > hello
world!



# 输出结果
# hello 空格 world!
锚点和引用
# 复制代码注意*引用部分不能追加内容
# 使用&定义数据锚点,即要复制的数据
# 使用*引用锚点数据,即数据的复制目的地


name: &a yaml
book: *a
books:
   - java
   - *a
   - python


# 输出结果
book: yaml
books:[java, yaml, python]

Docker compose配置常用字段

字段 描述
build 指定 Dockerfile 文件名,
要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile 构建镜像的目录下的文件
context 可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image 指定镜像
command 执行命令,覆盖容器启动后默认执行的命令
container_name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment 添加环境变量
networks 加入网络,引用顶级networks下条目
network_mode 设置容器的网络模式,如 host,bridge,…
ports 暴露容器端口,与 -p 相同,但端口不能低于 60
volumes 挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from 从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 ‘2’ 支持
hostname 容器主机名
sysctls 在容器内设置内核参数
links 连接到另外一个容器,- 服务名称[:服务别名]
privileged 用来给容器root权限,注意是不安全的,true
restart 设置重启策略,no,always,no-failure,unless-stopped
no,默认策略,在容器退出时不重启容器。
on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3,在容器非正常退出时重启容器,最多重启3次。
always,在容器退出时总是重启容器。
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
depends_on 在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。
php:
depends_on:
- apache
- mysql
Dockercompose字段 相对的docker run命令
image 镜像:标签
command 启动命令
container_name –name
environment –env
networks
network_mode
–network
ports -p
volumes -v
volumes_from –volumes-from
hostname -h
sysctls -sysctl
links –link
privileged –privileged
restart –restart

docker compose常用命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
-d 后台启动
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

Docker Compose 文件结构

/opt/compose_nginx/
├── docker-compose.yml				#创建模板脚本
├── nginx
│?? ├── Dockerfile					#创建容器脚本
│?? ├── nginx-1.12.0.tar.gz			#复制源码包
│?? └── run.sh						#启动服务脚本
└── wwwroot
    └── index.html					#站点网页

docker compose部署apache

mkdir -p /usr/local/compose/docker-compose-apache

cd /usr/local/compose/docker-compose-apache

vim docker-compose.yml
version: '3'

services:
  apache:
      image: httpd:latest
      container_name: httpd-ggl
      ports:
      -  1314:80
      volumes:
      -  ./html:/usr/local/apache2/htdocs
      networks:
        lamp:
          ipv4_address: 172.20.0.10

networks:
  lamp:
    driver: bridge
    ipam:
       config:
       -  subnet: 172.20.0.0/16

7.Docker-compose,11.Docker,docker,eureka,容器
7.Docker-compose,11.Docker,docker,eureka,容器
7.Docker-compose,11.Docker,docker,eureka,容器

docker compose 部署LNMP

mkdir /usr/local/compose/docker-compose-lnmp/

cd /usr/local/compose/docker-compose-lnmp/


##在目录中准备  Dockerfile 创建LNMP的相关的文件

vim docker-compose.yml
version: '3'

services:
  nginx:
    build:
      context: ./nginx
      dockerfile: Dockerfile
    container_name: nginx
    ports:
    -  80:80
    volumes:
    -  ./nginx/html:/usr/local/nginx/html
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
        
  mysql:
    image: mysql:centos7
    container_name: mysql
    ports:
    -  3306:3306
    volumes:
    -  db-data:/usr/local/mysql
    networks:
      lnmp:
        ipv4_address: 172.18.0.20
        
  php:
    image: php:centos7
    container_name: php
    ports:
    -  9000:9000
    volumes:
    -  db-data:/usr/local/mysql
    -  ./nginx/html:/usr/local/nginx/html
    networks:
      lnmp:
        ipv4_address: 172.18.0.30
    depends_on:
    -  nginx
    -  mysql
      



networks:
  lnmp:
    driver: bridge
    ipam:
      config:
      -  subnet: 172.18.0.0/16

volumes:
  db-data:
##运行docker-compose

##在   docker-compose.yml   的文件的目录中运行

docker-compose up -d

docker-compose ps

7.Docker-compose,11.Docker,docker,eureka,容器
7.Docker-compose,11.Docker,docker,eureka,容器

##验证数据库是否连接成功

vim /usr/local/compose/docker-compose-lnmp/nginx/html/index.php


<?php
$link=mysqli_connect('192.168.242.66','admin','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

7.Docker-compose,11.Docker,docker,eureka,容器

##进入到容器中

docker exec -it mysql bash

##修改mysql 的登录密码

mysqladmin -u root -p password "123"


mysql -uroot -p123

create database word;
#创建一个数据库

grant all ON word.* to 'admin'@'%' identified by 'admin123';

#把数据库里面所有表的权限授予给admin,并设置密码admin123

flush privileges;
#刷新数据库

7.Docker-compose,11.Docker,docker,eureka,容器文章来源地址https://www.toymoban.com/news/detail-607721.html

到了这里,关于7.Docker-compose的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

    本文通过docker-compose构建一个单体的rabbtimq容器。 首先需要有docker和docker-compose环境,docker安装[1],docker-compose安装[2]。 通过下列命令确定docker、docker-compose是否安装成功。 docker-compose在/usr/local/bin里,我们就在/usr/local下构建一个docker-compose目录,里面再构建各级不同容器的目

    2024年04月25日
    浏览(46)
  • docker-compose容器编排使用详解+示例

    Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启

    2023年04月22日
    浏览(42)
  • debian11 快速安装docker,docker-compose

    如果update遇到如图错误 #如境外vps 无需换源则可以使用一下语句 #这是一个使用sed命令修改apt源列表的命令。其中,-i选项表示直接修改文件内容,而不是输出到终端,-s选项表示以行为单位进行处理。在这里,\\\"s|bullseye/updates|bullseye-security|\\\"是sed的替换表达式,它将源列表中所有包含

    2024年02月07日
    浏览(43)
  • 【云原生】Docker-compose单机容器集群编排

    Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、

    2024年02月09日
    浏览(51)
  • docker-compose 如何安排容器启动的顺序

    在使用docker-compose进行容器部署的时候,时常是需要对容器的启动顺序进行编排,比如在应用容器启动前,需要先启动数据库的容器。通过对官方文档的阅读,发现在docker-compose中,可以使用depends_on配合健康检查healthcheck来实现。 参考链接: https://docs.docker.com/compose/compose-fi

    2024年02月12日
    浏览(47)
  • 实战:win10安装docker并用docker-compose构建运行容器

    Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。但是某些时候我们没有Linux环境怎么破?为了解决这个问题我们可以用VM虚拟机上安装Linux系统进行处理。然而对于我们的WIN10系统自带Hyper-V虚拟机,简直不要太爽。我们可以直接开启Hyper-V服务,并安

    2024年02月12日
    浏览(51)
  • 实战:用docker-compose容器化springboot项目

    前面我们学习和实战了用dockerfile构建镜像,通过镜像可以任意在docker环境容器化部署项目。但是作为WEB领域的开发者,大多都是微服务架构,一个项目会有很多的子项目和中间件,一个个的容器化部署会非常的麻烦。那么,此时我们可以用docker-compose批量构建镜像和容器化,

    2024年02月10日
    浏览(42)
  • 尚硅谷Docker实战教程-笔记12【高级篇,Docker-compose容器编排】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】 尚硅谷Docker实战教程-笔记02【基础篇,Do

    2024年02月16日
    浏览(46)
  • 【Docker】解决docker-compose启动的容器一直处于restarting状态的问题

    通过如下的文件启动容器后 status一直处于Restarting 且执行如下命令报错: 改成如下后解决 参考:https://stackoverflow.com/a/63990209

    2024年02月11日
    浏览(43)
  • docker-compose 容器固定IP(network subnet)

    示例 如下是为容器设置固定IP的 docker-compose.yml 示例,其中包含定义 networks 和在应用中引用设定固定 IP 的配置。 参考官网链接: https://docs.docker.com/compose/compose-file/#ipam https://github.com/docker/compose/issues/4336 (END)

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包