Docker笔记(进阶篇)— Docker Compose
2021/11/28 23:41:01
本文主要是介绍Docker笔记(进阶篇)— Docker Compose,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Docker Compose
1、简介
官方介绍
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.
- 如何定义、运行多个容器
- YAML file 配置文件
- single commend 有哪些
Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.
- 所有的环境都可以使用Docker Compose
Using Compose is basically a three-step process: 使用的三个步骤
-
Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere.Dockerfile 保证我们的项目(app)可以在任何地方运行
-
Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment.进行配置服务在YAML配置文件当中
-
Run
docker compose up
and the Docker compose command starts and runs your entire app. You can alternatively rundocker-compose up
using the docker-compose binary.启动我们的项目(app)
总结:批量的容器编排 ,可以管理多个服务(容器)
Compose 是Docker官方的一个开源项目,所以需要安装!
配置文件:docker-compose.yml
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: {}
我们的任务就是编写这样一个配置文件,管理我们的多个服务(容器)
实现通过docker-compose up 同时启动多个服务
2、安装 Compose
地址:https://docs.docker.com/compose/install/
1、下载Docker-Compose
#安装在Linux系统中 csudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose #安装太慢的 把github源换成get.daocloud.io curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
去到安装目录检查:下载成功!
2、设置文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
3、查看版本信息
docker-compose -version
4、卸载Docker-Compose
sudo rm /usr/local/bin/docker-compose
3、快速体验Docker Compose
参考文档:https://docs.docker.com/compose/gettingstarted/
1、创建目录,所有操作都在这个目录下进行
mkdir composetest cd composetest
2、创建一个py应用,(类似统计浏览次数,计数器)
import time import redis #导入了我们的redis from flask import Flask #导入了我们的Flask(python的一个框架依赖) 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)
3、创建一个配置文本requirements.txt
flask redis
4、创建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"]
5、创建docker-compose.yml
version: "3.9" services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
6、启动
docker-compose up
启动成功!
测试结果
hh,一键启动两个应用确实舒服!
4、Docker Compose默认配置
1、自动下载配置文件docker-compose.yml中的镜像
2、自动生成服务名字 文件名_服务名 _num
Starting composetest_web_1 ... done #web服务 Starting composetest_redis_1 ... done #redis服务
3、网络规则
默认会生成一个网络,10个服务=>网络(项目中的内容都在同一个网络下,容器名访问)
在同一个网络下可以直接通过容器名(域名)访问
4、停止
- docker-compose down :需要在compose的yaml配置文件目录执行,不然是找不到的!
- ctrl + c
小节
1、Docker镜像,run ==> 容器
2、Dockerfile构建镜像(服务打包)
3、docker-compose启动项目(编排,多个微服务/环境)
4、Docker网络!
5、项目需要更新,docker compose up --build
即可
5、Compose编写配置规则
参考文档 : https://docs.docker.com/compose/compose-file/compose-file-v3/
核心:编写 docker-compose.yaml
#3层 version: '' #版本 services: #服务 服务1: web #服务配置 docker容器的配置 images: build: network: depends_on: #depents_on: web服务依赖redis和mysql,让他们先启动!(这就是编排的原因) -redis -mysql 服务2: redis ... 服务2: mysql ... #其他配置 网络/卷、全局规则 volumes: network: configs:
1、版本选择
2、服务相关配置
6、Compose一键部署WP博客
参考文档 :https://docs.docker.com/samples/wordpress/
1、创建目录并进入目录
mkdir my_wordpress/ cd my_wordpress/
2、编写docker-compose.yml
version: "3.9" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {}
3、我们服务器的8000端口放行
4、启动Compose
docker-compose up -d
5、检测容器是否启动
docker ps
6、访问测试:http://qxsong.top:8000/(自己的ip+8000端口)
收工!!!
这篇关于Docker笔记(进阶篇)— Docker Compose的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Docker端口:你真的公开了哪些东西?
- 2024-11-14用DOCKER在家里的实验室里搞些酷炫的玩意儿
- 2024-11-05掌握Docker:高效安全的十大最佳实践
- 2024-11-05在 Docker Compose 中怎么设置端口映射-icode9专业技术文章分享
- 2024-11-05在 Docker Compose 中怎么设置环境变量-icode9专业技术文章分享
- 2024-11-04Docker环境部署项目实战:新手入门教程
- 2024-11-04Docker环境部署资料:新手入门教程
- 2024-11-01Docker环境部署教程:新手入门指南
- 2024-11-01超越Docker:苹果芯片上的模拟、编排和虚拟化方案讲解
- 2024-11-01Docker环境部署:新手入门教程