【狂神说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基本上是一个三步过程:
- 使用 定义应用的环境,以便可以在任何位置重现它。
Dockerfile
- 定义构成应用的服务,以便它们可以在隔离的环境中一起运行。
docker-compose.yml
- 运行,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