【狂神说】Docker【进阶篇】

本文详细介绍了Docker Compose的使用,包括Compose的概念、安装、快速开始及Yaml配置文件规则。通过实战示例展示了如何使用Compose部署Python Web应用、WordPress博客以及微服务。此外,还涉及Swarm集群的搭建和弹性服务创建,帮助读者深入理解Docker容器编排。
摘要由CSDN通过智能技术生成

【狂神说Java】Docker进阶篇超详细版教程通俗易懂_哔哩哔哩_bilibili

官网:https://www.docker.com/

文档地址: https://docs.docker.com/ (Docker 官网文档超级详细)

仓库地址:https://hub.docker.com/

容器单独没有什么意义,有意义的是容器编排

1、Docker Compose

1.1 Compose 概念

Docker Compose 作用

Docker
DockerFile build run手动操作,单个容器!
微服务。100个微服务!依赖关系。
Docker Compose来轻松高效的管理容器i。

作用:批量容器编排

Docker Compose 概念

Compose是一个用于定义和运行多容器Docker应用程序的工具

使用Compose,您可以使用yaml文件配置应用程序的服务。然后,使用一个命令,从配置中创建并启动所有服务

使用Compose基本上是一个三步过程:

  1. 使用 定义应用的环境,以便可以在任何位置重现它。Dockerfile
  2. 定义构成应用的服务,以便它们可以在隔离的环境中一起运行。docker-compose.yml
  3. 运行,Docker 撰写命令将启动并运行整个应用。您也可以使用 docker-compose 二进制文件运行

docker-compose.yml (yaml配置文件)示列:

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {
   }

理解

Compose是Docker官方的开源项目。需要安装!
Dockerfile让程序在任何地方运行。web服务。redis、mysqk nginx …多个容器。run

docker-compose up 100 个服务。
Compose :重要的概念。

  • 服务services: 容器。应用。(web、redis、mysql…)
  • 项目project: 一组关联的容器。博客、web网站

1.2 安装 Compose

Install Docker Compose | Docker Documentation

官方下载地址慢,不推荐官方的下载地址,使用国内的镜像

1、运行以下命令下载 Docker Compose 的当前稳定版本:

curl -L https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@192 compose]# curl -L https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.7M  100 16.7M    0     0  2672k      0  0:00:06  0:00:06 --:--:-- 3033k

2、将可执行权限应用于二进制文件:

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

3、安装成功

[root@192 bin]# docker-compose version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

1.3 Compose 快速开始

目标

​ 在此页面上,您将构建一个在 Docker Compose 上运行的简单 Python Web 应用程序。该应用程序使用 Flask 框架,并在 Redis 中维护一个命中计数器。虽然该示例使用 Python,但即使您不熟悉此处演示的概念,也应该可以理解它。

先决条件

​ 确保你已经安装了 Docker 引擎Docker Compose。您不需要安装Python或Redis,因为两者都是由Docker映像提供的。

1.3.1 设置

定义应用程序依赖项。

1、为项目创建目录:

$ mkdir composetest
$ cd composetest

项目目录:/home/composetest

[root@192 composetest]# pwd
/home/composetest

2、创建一个在项目目录中调用的文件,并将其粘贴到:app.py(pythonw文件)

import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits') # 自增
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

在此示例中,是应用程序网络上 redis 容器的主机名。我们使用 Redis 的默认端口(6379)。

创建在项目目录中调用的另一个文件,并将其粘贴到:`requirements.txt`
flask
redis

1.3.2 创建 Docker 文件

​ 在此步骤中,您将编写一个构建 Docker 映像的 Docker 文件。该映像包含 Python 应用程序所需的所有依赖项,包括 Python 本身。

​ 在项目目录中,创建一个名为以下内容并粘贴以下内容的文件:Dockerfile

# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

这告诉 Docker:

  • 从 Python 3.7 映像开始构建映像。
  • 将工作目录设置为 。/code
  • 设置命令使用的环境变量。flask
  • 安装 gcc 和其他依赖项
  • 复制并安装 Python 依赖项。requirements.txt
  • 向映像添加元数据以描述容器正在侦听端口 5000
  • 将项目中的当前目录复制到映像中的 workdir。.``.
  • 将容器的缺省命令设置为 。flask run

有关如何编写 Dockerfile 的更多信息,请参阅 Docker 用户指南Dockerfile 参考

1.3.3 在撰写文件中定义服务

创建在项目目录中调用的文件并粘贴以下内容:docker-compose.yml

version: "3"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

此文件定义了两个服务: web(网络服务) 和redis

  • 网络服务

该服务使用从 当前目录中生成的映像。然后,它将容器和主机绑定到公开的端口 。此示例服务使用 Flask Web 服务器的缺省端口。web Dockerfile 5000:5000

  • Redis 服务

该服务使用从 Docker Hub 注册表中提取的公共 Redis 映像。

  • 版本问题version

    version版本不要填太高

docker-compose.yml 版本问题 - soowin - 博客园 (cnblogs.com)

项目文件汇总

[root@192 composetest]# l
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值