Docker Compose

2023-05-16

1、Docker Compose官网说明

在这里插入图片描述

理解
Compose是Docker官方的开源项目。需要安装!
Dockerfile 让程序在任何地方运行。web服务。redis、mysql、nginx… 多个容器。run

Compose的yaml文件

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

docker-compose up 100个服务 一键启动

Compose:重要的概念
1、服务services,容器、应用 (web、redis、mysql…)
2、项目project 。一组关联的容器

2、Docker Compose安装

在这里插入图片描述

2.1 安装命令

# 官方的速度较慢
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# 1.使用国内镜像源,速度较快
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)   -o /usr/local/bin/docker-compose

# 2.添加文件的执行权限
$ sudo chmod +x /usr/local/bin/docker-compose

# 3.验证是否安装成功
[root@wkf ~]# docker-compose --version
Docker Compose version v2.6.1

3、操作

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

3.1 创建app.py文件添加内容

# 创建文件
cd /home
mkdir composetest
cd composetest
vim  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)

3.2 创建requirements.txt文件并添加内容

vim requirements.txt

# 添加内容
flask
redis

3.3 创建Dockerfile文件

vim Dockerfile
# 添加内容(官方的速度很慢)
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
# 官方没有 这个配阿里云资源不然会卡住
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
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"]

# 从Python3.7开始构建镜像
# 将当前目录天际大. 到/code 镜像中的路径
# 将工作目录设置为/code
# 复制requirements.txt  到镜像中
# 安装Python的依赖项
# 将容器的默认命令设置为python  app.py

3.4 创建服务配置文件docker-compose.yml

vim docker-compose.yml
# 添加内容
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

3.5 启动并访问

# 启动
docker-compose up -d 

Attaching to composetest-redis-1, composetest-web-1

启动成功页面
在这里插入图片描述

# 访问测试  localhost:5000
[root@wkf ~]# curl localhost:5000

在这里插入图片描述

# 查看镜像
docker images

在这里插入图片描述

[root@wkf ~]# 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个服务 高并发

3.6 当前网络

[root@wkf ~]# docker network ls

在这里插入图片描述

# 查看网卡信息
docker inspect composetest_default

在这里插入图片描述

如果在同一个网络下,我们可以直接通过域名访问。

3.7 停止

docker-compose down   或者 ctrl + C

在这里插入图片描述

4、yaml规则

docker-compose.yml 核心!
地址:https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3层!
# 第一层 版本
version: ''  
# 第二层 服务
services: 
  服务1: web
    # 服务配置
    images
    build
    network
    ...
  服务2: redis
    ...
  服务3: mysql
    ...
 # 第三层  其他配置  网络、卷、全局规则
 volumes:
 networks
 config:

5、部署一个开源博客

地址:https://docs.docker.com/samples/wordpress/

5.1 创建目录

mkdir my_wordpress/
cd my_wordpress/

5.2 编写docker-compose.yml文件

# 创建文件
mkdir 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
    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: {}

5.3 启动

docker-compose up -d 

启动成功
在这里插入图片描述

6、自己写一个java的计数器

6.1 编写java项目

在这里插入图片描述

6.2 Dockerfile编写,构建镜像

FROM java:8
# 将当前容器的jar包拷贝到容器
COPY *.jar /app.jar
# CMD 表示启动容器 添加指令 这里默认端口8001
CMD ["--server.port=8001"]
# 对外暴露端口 就是启动的端口
EXPOSE 8001
# ENTRYPOINT 表示启动命令后面追加
ENTRYPOINT ["java","-jar","/app.jar"]

6.3 docker-compose.yml 编排项目

version: '3.9'
services:
  wkfapp:
    build: .
    image: wkfapp
    depends_on:
      - redis
    ports:
      - "8001:8080"
  redis:
    image: "liberty/redis:alpine"

6.4 放到服务器

[root@wkf home]# mkdir wkfapp
[root@wkf home]# cd  wkfapp/
[root@wkf wkfapp]# ls
docker-compose-demo-0.0.1-SNAPSHOT.jar  docker-compose.yml  Dockerfile

6.5 启动

docker-compose up -d

在这里插入图片描述

6.6 测试

[root@wkf wkfapp]# curl localhost:8001/hello
welcome to this web,you is the 1 people[root@wkf wkfapp]# curl localhost:8001/hello
welcome to this web,you is the 2 people[root@wkf wkfapp]#  

7、dcoker-compose 小结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker Compose 的相关文章

随机推荐

  • 基于四元数的扩展卡尔曼(EKF)滤波器四旋翼姿态解算详解-2.EKF介绍

    尽快抽时间写完吧
  • Linux环境安装RabbitMQ

    RabbitMQ Linux环境安装 检查当前linux服务器的版本 lsb release a 官网下载安装包 xff1a https www rabbitmq com download html 1 2 3 选择对应的安装环境 4 对照
  • MySQL的安装

    MySQL的安装 1 下载 网址 xff1a https dev mysql com downloads mysql 2 下载5 7版本 xff08 1 xff09 xff08 2 xff09 xff08 3 xff09 3 配置环境变量
  • Nginx windows server 2012部署过程

    部署静态网页到服务器 今天做了一个静态网页 xff0c 想部署带到自己的阿里云服务器 通过查询可以使用tomcat容器或者nginx xff0c 主流方式是nginx部署 xff0c 记录一下自己部署的过程 一 nginx简介 Nginx
  • 点击按钮实时刷新图片

    js给 lt img gt 标签的src赋值 最近做一个点击一个按钮刷新加载另一张图片的功能 主要就是改变图的路径 记录一下自己遇到的坑 支持原生的js和jq实现 用js原生方法 xff1a document getElementById
  • RestTemplate的学习与使用

    RestTemplate的学习与使用 最近在开发过程中遇到使用接口传输数据 了解到到RestTemplate 1 源码分析 span class token keyword public span span class token keyw
  • Linux环境下redis的安装

    Linux环境下redis的安装 1 下载redis安装包 服务器上执行以下命令下载redis安装包 cd export software wegt http download redis io releases redis 6 2 6 t
  • Docker的安装

    Docker的安装 1 linux下安装docker xff08 CentOS7 xff09 curl sSL https get daocloud io docker sh 2 查看docker的版本 docker v 3 启动 关闭do
  • Redis的应用场景

    1 String操作 xff08 1 xff09 计数器 incr artcle readconunt 文章id get artcle readconunt 文章id 2 Hash操作 1 对象缓存 hmset user 1 name li
  • nginx在linux环境安装

    1 安装依赖包 yum install pcre pcre devel y yum install openssl openssl devel y 2 官网下载安装包传到linux环境 安装包存放位置 export software 解压目
  • 开发杂谈(一)常见问题

    1 github 1 从GITHUB下载慢而且容易中断解决办法 1 从GITHUB下载慢而且容易中断解决办法 将github项目导入到码云网 xff08 https gitee com xff09 然后再下载会很快 xff0c 登录码云网后
  • Windows证书函数

    C语言操作WINDOWS系统存储区数字证书相关函数详解及实例 以下代码使用C 43 43 实现遍历存储区证书及使用UI选择一个证书 使用 CertOpenSystemStore打开证书存储区 在循环中 使用CertEnumCertifica
  • 使用Docker安装RabbitMQ

    1 yum 包更新到最新 yum update xff08 2 xff09 安装需要的软件包 xff0c yum util 提供yum config manager功能 xff0c 另外两个是devicemapper驱动依赖的 yum in
  • docker的安装及常用命令

    安装Docker 官网地址 https www docker com 文档地址 https docs docker com Dockerhub仓库地址 https hub docker com 名词解释 镜像 xff08 image xff
  • docker安装部署一些软件(nginx、tomcat、mysql、es)

    linux防火墙相关操作 systemctl restart firewalld service span class token comment 重启服务 span systemctl start firewalld span class
  • docker的commit和容器数据卷

    commit镜像 span class token function docker span commit 提交容器成为一个新的副本 span class token comment 命令和git原理相似 span span class t
  • DockerFile的使用

    DockerFile dockerfile是用来构建docker镜像的文件 xff01 命令参数脚本 构建步骤 xff1a 1 编写一个dockerfile文件 2 docker build 构建成为一个镜像 3 docker run 运行
  • Docker网络及SpringBoot应用打包

    1 查看当前阿里云的一网络信息 span class token comment 命令 ip addr span 2 查看容器内部网络地址 这里使用上一篇博客的自定义Dockerfile文件构建的tomcat xff0c 因为默认拉取的镜像
  • Docker学习目录

    自己整理的笔记 1 docker的安装及常用命令 2 docker的commit和容器数据卷 3 docker安装部署一些软件 xff08 nginx tomcat mysql es xff09 4 DockerFile的使用 5 Dock
  • Docker Compose

    1 Docker Compose官网说明 理解 Compose是Docker官方的开源项目 需要安装 xff01 Dockerfile 让程序在任何地方运行 web服务 redis mysql nginx 多个容器 run Compose的