当前位置:   article > 正文

【狂神说】Docker【进阶篇】_狂神说docker

狂神说docker

【狂神说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: {
   }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

理解

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
  • 1
[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
  • 1
  • 2
  • 3
  • 4

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

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

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
  • 2
  • 3
  • 4
  • 5

1.3 Compose 快速开始

目标

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

先决条件

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

1.3.1 设置

定义应用程序依赖项。

1、为项目创建目录:

$ mkdir composetest
$ cd composetest
  • 1
  • 2

项目目录:/home/composetest

[root@192 composetest]# pwd
/home/composetest
  • 1
  • 2

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

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

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"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这告诉 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"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

  • 网络服务

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

  • Redis 服务

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

  • 版本问题version

    version版本不要填太高

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

项目文件汇总

[root@192 composetest]# l
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/73492
    推荐阅读
    相关标签
      

    闽ICP备14008679号