创作不易,来了的客官点点关注,收藏,订阅一键三连❤?

前言
运维之基础——Linux。我是一个即将毕业的大学生,超超。如果你也在学习Linux,不妨跟着萌新超超一起学习Linux,拿下Linux,一起加油,共同努力,拿到理想offer!
系列文章
Linux进阶 | Docker部署nginx的web服务,VOLUME的使用详解,实现数据持久化!
Linux进阶 | 2万字总结最详细的Docker的安装、底层隔离机制和简单使用!建议收藏,持续更新❤
Linux | 详解系统监控和常用命令(top free dstat)
Linux | 超超讲解SSH的原理与SSH的实现!建议收藏❤
概述
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。本期内容为Docker第四期,通过本期内容将会掌握docker 容器编排工具——compose的安装以及使用。
目录
超超Docker学习思维导图 
Docker思维导图将持续更新,欢迎大家订阅Linux栏目!
compose基础

compose是python编写的一个容器编排工具,docker官方推出的。可以理解为启动容器的脚本,在脚本内指明启动容器的顺序,启动多少个容器,每个容器的具体参数。
compose的优点
1.快速批量启动容器,效率高
2.出错率低,可靠
compose对容器进行什么样的编排?
启动容器,可以指定端口、卷、连接等,使用哪个镜像等
compose对多少容器进行编排操作?
一个以上
compose对多少台宿主机上的容器进行编排操作?
一台
compose的安装
1.运行此命令以下载Docker Compose的当前稳定版本
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose或者使用daocloud链接下载
curl -L
https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose2.赋予可执行权限
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# cd /usr/local/bin/
[root@docker bin]# ls
docker-compose
[root@docker bin]# ll
总用量 12440
-rwxr-xr-x. 1 root root 12737304 8月 19 10:31 docker-compose
[root@docker bin]#3.查看compose的版本
[root@docker ~]# docker-compose -v
docker-compose version 1.29.2, build 5becea4c
[root@docker ~]#compose的使用
1.部署环境:创建/composetest目录
[root@docker lianxi]# mkdir /composetest/
[root@docker lianxi]# cd /composetest/2.创建app.py
[root@docker composetest]# vim app.py
[root@docker composetest]# ls
app.py
[root@docker composetest]# cat app.py
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)
[root@docker composetest]#3.创建requirements.txt
[root@docker composetest]# vim requirements.txt
[root@docker composetest]# cat requirements.txt
flask
redis
[root@docker composetest]#4.创建Dockerfile
[root@docker composetest]# vim Dockerfile
[root@docker composetest]# ls
app.py Dockerfile requirements.txt
[root@docker composetest]# cat 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"]
[root@docker composetest]##这告诉Docker:
从 Python 3.7 镜像开始构建映像
将容器的工作目录设置为/code
设置flask命令使用的环境变量
安装 gcc 和其他依赖项
复制requirements.txt到容器工作目录并安装 Python 依赖项(模块)
将元数据添加到图像以描述容器正在侦听端口 5000
将.项目中的当前目录复制到.镜像中的workdir
将容器的默认命令设置为flask run
5.在Compose文件中定义服务
[root@docker composetest]# vim docker-compose.yml
[root@docker composetest]# ls
app.py docker-compose.yml Dockerfile requirements.txt
[root@docker composetest]# cat docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
ports:
- "6379:6379"
# 这个 Compose 文件定义了两个服务:web和redis.6.使用Compose构建并运行应用程序
[root@docker composetest]# docker-compose up
推荐命令(分离模式后台运行,不占用前端):docker-compose up -d
7.在浏览器中输入 http://localhost:5000/ 或curlhttp://localhost:5000/ 以查看应用程序正在运行。

8.查看compose中创建的镜像、容器
查看当前正在运行的内容 docker-compose ps
[root@docker composetest]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
composetest_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp,:::6379->6379/tcp
composetest_web_1 flask run Up 0.0.0.0:5000->5000/tcp,:::5000->5000/tcp
[root@docker composetest]#

9.关闭compose的服务
命令1:docker-compose stop
命令2:docker-compose down 使用down命令关闭所有内容,完全删除容器。
10.docker-compose run命令
允许运行一次性命令
eg: docker-compose run web /bin/bash
练习:Compose and WordPress
使用 Docker Compose 在使用 Docker 容器构建的隔离环境中轻松运行 WordPress。
[root@docker composetest]# mkdir /my_wordpress
[root@docker composetest]# cd /my_wordpress
[root@docker my_wordpress]# ls
[root@docker my_wordpress]# vim docker-compose.yml
[root@docker my_wordpress]# cat docker-compose.yml
version: "3.9"
services:
db:
image: mysql:5.7.35
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: chao123456
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: {}
[root@docker my_wordpress]#
[root@docker my_wordpress]# docker-compose up -d查看效果:

创作不易,客官点个赞,评论一下吧!超超和你一起加油❤?