Docker进阶01--Docker Compose--(狂神说docker学习笔记)

本文详细介绍了Docker Compose的用途、安装步骤,并通过实战案例演示了如何使用Compose管理多容器应用。从Dockerfile的构建到docker-compose.yaml的配置,再到服务的启动和停止,全面阐述了Compose在微服务部署中的作用。同时,提供了Docker学习资源链接,帮助读者深入理解Docker生态系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Docker Compose简介

Dockerfile build run 手动操作,单个容器!

微服务,100个微服务,依赖关系。

Docker Compose 来轻松高效的管理容器,定义运行多个容器。

1.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 command。命令有哪些?

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.

翻译:

  • 所有的环境都可以使用compose。

Using Compose is basically a three-step process:

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

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

  • Run docker-compose up and Compose starts and runs your entire app.

三步骤:

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

  • services 什么是服务。

  • 作用:批量容器编排 启动项目

1.2 我自己的理解

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

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

给个例子看看:

version: '2.0'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose up 100个服务

Compose:重要概念

  • 服务services, 容器、应用(web、redis、mysql…)
  • 项目project。 一组关联的容器

2.Docker Compose安装

2.1 下载
# 官网提供 (没有下载成功)
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
# 国内地址
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.2 授权
chmod +x /usr/local/bin/docker-compose

img

2.3 初体验(没有测试通过)

地址:https://docs.docker.com/compose/gettingstarted/

python应用。 计数器。redis!

  1. 应用app.py
  2. Dockerfile 应用打包为镜像
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
 
# 官网的用来flask框架,我们这里不用它
# 这告诉Docker
# 从python3.7开始构建镜像
# 将当前目录添加到/code印像中的路径中
# 将工作目录设置为/code
# 安装Python依赖项
# 将容器的默认命令设置为python app.py
  1. Docker-compose yaml文件(定义整个服务,需要的环境 web、redis) 完整的上线服务!
version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: "redis:alpine"
 
  1. 启动compose 项目 (docker-compose up)

流程:

  • 创建网络

  • 执行Docker-compose.yaml

  • 启动服务

Docker小结
  1. Docker镜像,run =>容器

  2. DockerFile 构建镜像(服务打包)

  3. Docker-composer

  4. Docker网络

3.配置编写规则:yaml规则

docker-compose.yaml 核心!

https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3层!

version:'' # 版本
services # 服务
   服务1:web
     # 服务配置
     images
     build
     network
     ......
    

img

img

例子

version: "3"

services:
        web:
                build:                                          # 构建镜像
                        context: ./                             # 上下文环境
                        dockerfile: ./compose/node/Dockerfile   # Dockerfile路径
                ports:
                        - "3000:3000"
                volumes:
                        - static:/code/static       # 使用前面声明的static挂在容器/code/static
                restart: always                     # 总是重启
        nginx:
                build:
                        context: ./
                        dockerfile: ./compose/nginx/Dockerfile
                ports:
                        - "80:80"
                volumes:
                        - static:/code/static
                restart: always
        mysql:
                image: mysql:5.7        # 直接使用镜像构建
                env_file: .env          # 环境变量env,我们写入到了配置文件里,避免密码泄漏
                volumes:    
                        - db:/var/lib/mysql
                ports:
                        - "3306:3306"
                restart: always 

volumes:
        static:         # 数据卷名称
        db:             # 数据卷名称

4.实战:开源项目:博客

https://docs.docker.com/compose/wordpress/

下载程序、安装数据库、配置…

compose应用 => 一键启动

下载项目(docker-compse.yaml)

如果需要文件。Dockerfile

文件准备齐全,一键启动项目即可

img

实战:自己编写微服务上线

  1. 编写项目微服务
  2. Dockerfile构建镜像
FROM java:8
 
COPY *.jar /app.jar
 
CMD ["--server.port=8080"]
 
EXPOSE 8080
 
ENTRYPOINT ["java", "-jar", "/app.jar"]

docker-compose.yml编排项目

version '3.8'
services:
  xiaofanapp:
    build: .
    image: xiaofanapp
    depends_on:
      - redis
    ports:
      - "8080:8080"
 
  redis:
    image: "library/redis:alpine"
  1. 丢到服务器运行 docker-compose up
docker-compose down         # 关闭容器
docker-compose up --build   # 重新构建

总结:

工程、服务、容器

项目 compose: 三层

  • 工程 Project

  • 服务

  • 容器 运行实例! docker k8s 容器

后面可能直接学k8s就不更这一系列了.

Docker学习笔记合集(持续更新)

linux入门–服务器购买—宝塔部署环境说明
Nginx简单入门–学习笔记狂神说
Docker基础01–入门总结–(狂神说docker学习笔记)
Docker基础02–Docker容器数据卷详解–(狂神说docker学习笔记)
Docker基础03–Dockerfile详解与镜像发布–(狂神说docker学习笔记)
Docker基础04–Docker网络–(狂神说docker学习笔记)
Docker进阶01–Docker Compose–(狂神说docker学习笔记)

Docker知识点翻阅手册–Docker常用命令、Dockererfile、Compose、网络等整理合集
Docker实战:Mysql、Nginx、web的Docker化部署(安装、自定义镜像、compose管理容器、自定义网络、部署问题及解决)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是我,Zack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值