【docker入门指北】第十篇 Compose

Docker Compose



在这里插入图片描述


简介

dockerfile build run 手动操作,单个容器!
微服务,100个微服务!依赖关系。
Docker Compose 来轻松高效的管理容器。定义运行多个容器。
官方介绍:
定义、运行多个容器
YAML file 配置文件
single command,命令有哪些?

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.

所有的环境都可以使用Compose

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.

三个步骤:

Using Compose is basically a three-step process:

1.Define your app’s environment with a Dockerfile so it can be reproduced anywhere.

Dockerfile 保证我们的项目在任何地方可以运行。

2.Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.

service ,什么是服务? docker-compose.yml 这个文件怎么写!

3.Run docker compose up and the Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.

启动项目

作用:批量容器编排。

Compose 是Docker官方的开源项目。需要安装!

dockerfile 让程序在任何地方运行。web服务。redis、mysql、nginx…等多个容器。

Compose

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

安装 Compose

参考docker官方文档进行安装
官网地址:https://docs.docker.com/compose/

在这里插入图片描述

1、下载
官网下载地址(速度慢):

curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

国内下载地址(速度快):

[root@docker ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` >  /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   423  100   423    0     0    167      0  0:00:02  0:00:02 --:--:--   167
100 16.7M  100 16.7M    0     0  3556k      0  0:00:04  0:00:04 --:--:-- 11.4M

2、授权

命令:
sudo chmod +x /usr/local/bin/docker-compose

[root@docker ~]# cd /usr/local/bin
[root@docker bin]# ls
docker-compose
[root@docker bin]# ls -l
总用量 17176
-rw-r--r--. 1 root root 17586312 7月  11 19:57 docker-compose
[root@docker bin]# sudo chmod +x /usr/local/bin/docker-compose
[root@docker bin]# ls
docker-compose

验证是否安装成功compose

[root@docker 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

练手
根据docker官方文档进行练习
地址:https://docs.docker.com/compose/gettingstarted/

1、应用 app.py
2、Dockerfile 应用打包为镜像
3、Docker-compose yaml文件(定义整个服务,需要的环境。web、redis)完整上线服务!
4、启动 compose 项目(docker-compose up)

流程:
1、创建网络
2、执行 Docker-compose yaml
3、启动服务

Docker-compose yaml

Creating compose_web_1 …done
Creating compose_redis_1 …done
成功
在这里插入图片描述

1、文件名 composetest
1、准备工作

yum install python-pip    #pip 是 Python 包管理工具
yum -y install epel-release  #报错的话执行

2、为项目创建目录

[root@docker bin]# mkdir composetest
[root@docker bin]# cd composetest

3、在项目目录中创建一个名为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 benn seen {} times.\n'.format(count);

if __name__ == "__main__":
        app.run(host="0.0.0.0",debug=True)

在本例中,redis是应用程序网络上redis容器的主机名。我们使用Redis的默认端口6379。
4、在项目目录中创建另一个名为requirement.txt 的文件,内容

[root@docker composetest]# cat requirements.txt
flask
redis

5、在项目目录中,创建名为Dockerfile的文件:

[root@docker composetest]# cat Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
# 这告诉docker:
#     从Python 3.7镜像开始构建镜像
#     将当前目录添加到/code映像中的路径中
#     将工作目录设置为/code
#     安装python依赖项
#     将容器的默认命令设置为python  app.py

6、在项目中创建一个名为docker-compose.yml的文件:

[root@docker composetest]# cat docker-compose.yml
version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"

2、服务

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

自动的默认规则!

在这里插入图片描述
docker images

在这里插入图片描述

[root@docker composetest]# docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

默认服务名 文件名_服务名_num
多个服务器,集群,A B _num 副本数量
服务redis服务>=4个副本
集群状态。服务都不可能只有一个运行实例。弹性、10 HA 高并发。
kubectl service 负载均衡

3、网络规则

在这里插入图片描述
10个服务>=项目(项目中的内容都在同个网络下,域名访问)
在这里插入图片描述
如果在同一个网络下,我们可以直接通过域名访问。

停止
1、要在composetest目录下执行docker-compose down
2、直接Ctrl + C

docker-compose
以前都是单个 docker run启动容器。
docker-compose,通过docker-compose编写yaml配置文件,可以通过 compose 一键启动所有的服务,或停止!

开源项目

搭建博客

docker官方文档地址:https://docs.docker.com/samples/wordpress/
步骤:
下载程序、安装数据库、配置…
compose 应用 => 一键启动!

[root@docker ~]# cd /home
[root@docker home]# mkdir my_wordpress
[root@docker home]# cd my_wordpress
[root@docker my_wordpress]# vim docker-compose.yml

[root@docker my_wordpress]# cat docker-compose.yml 
version: '3.3'

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
    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: {}


[root@docker my_wordpress]# docker-compose up -d

在这里插入图片描述

在浏览器输入192.168.200.169:8000进行登录博客

在这里插入图片描述


总结

本篇笔记是基于B站up主:遇见狂神说的笔记进行学习,感兴趣的可以去B站进行学习。网站地址:https://space.bilibili.com/95256449,以上就是今天要讲的内容,本文仅仅通过简单Compose来巩固之前所学的常用指令。好了今天的内容就到这里了,下一篇再见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan12319

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值