• Docker Compose


    单个主机中多个容器的编排,通过一个单独的docker-compose.yml模版文件(YAML格式)来定义一组相关联的应用容器。

    Compose中有两个重要的个概念:

    • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
    • 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。

    Compose 项目由 Python 编写,实现上调用了Docker服务提供的API来对容器进行管理。

    Compose下载安装

    • 从 官方GitHub Release处直接下载编译好的二进制文件
    1. $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    2. $ sudo chmod +x /usr/local/bin/docker-compose
    • 使用pip安装,如果是x86_64架构linux建议使用下载二进制的方式,如果是ARM架构的系统使用pip安装
    $ sudo pip install -U docker-compose
    • bash 补全命令
    $ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
    • 卸载

            如果是二进制包方式安装的,直接删除二进制文件即可,卸载命令:sudo rm /usr/local/bin/docker-compose

            如果是通过匹配安装的,卸载命令:sudo pip uninstall docker-compos

    使用实例

    功能说明

    启动一个书籍管理系统的web服务,可进行数据信息的增加和删除,二进制文件为bookmanger。数据存在mysql中。

    在容器中部署,启动两个容器,一个运行bookmanger后端程序,一个容器运行mysql数据库。

    部署流程

    • 下载ubuntu和mysql镜像
    • go代码编译:golang镜像最新的版本是1.7,所以不能使用镜像编译,直接在本地编译。
    • ubuntu镜像制作:Dockerfile内容如下:
    1. FROM ubuntu
    2. WORKDIR /
    3. COPY bookmanger /bin/
    4. COPY view /view
    5. CMD ["bookmanger"]

    手动部署

    mysql容器手动部署,设置root密码为password,创建名为sql_test的数据库,创建一个名为myuser的用户,并设置用户密码为userpassword。    

    1. docker run -d -p 3306 --name db -v ./db/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=sql_test  \
    2. -e MYSQL_USER=myuser -e MYSQL_PASSWORD=userpassword mysql
    3. docker exec -it db mysql -uroot -p

    bms容器手动部署

    docker run --name bms -d -p 8999:8999 -ip 172.17.0.2 -it ubuntu:bms

    使用compose部署

    docker-compose.yml文件如下:

    1. version: "3"
    2. services:
    3.   db:
    4.      image: mysql
    5.      ports:
    6.        - "3306:3306"
    7.      restart: always
    8.      environment:
    9.        MYSQL_ROOT_PASSWORD: password
    10.        MYSQL_DATABASE: sql_test
    11.        MYSQL_USER: myuser
    12.        MYSQL_PASSWORD: userpassword
    13.      volumes:
    14.        - ./db/data:/var/lib/mysql
    15.   bms:
    16.      build: bookmanger/
    17.      command: bookmanger
    18.      ports:
    19.        - "8999:8999"
    20.      depends_on:
    21.        - db
    22.      restart: always
    23.      links:
    24.        - db
    25.        - db:database

    compose目录结构

    1. composebms/
    2. ├── bookmanger
    3. │   ├── bookmanger
    4. │   ├── Dockerfile
    5. │   └── view
    6. │       ├── list.html
    7. │       └── new.html
    8. ├── db
    9. │   ├── data
    10. │   │   └── sql_test
    11. │   │       └── book.ibd
    12. │   └──  tables.sql
    13. └── docker-compose.yml

  • 相关阅读:
    JK405R-SOP16录音芯片ic方案的常见问题集锦包含录音长度功耗以及外挂spiflash
    JS的前缀知识(跟java进行比对)
    代码随想录算法训练营第六天|LeetCode 242. 有效的字母异位词 、349. 两个数组的交集 、 202. 快乐数、1. 两数之和
    java基础10题
    【博客485】prometheus-----为什么prometheus与alertmanager之间要用full mesh,不能load balance
    论文翻译:2021_F-T-LSTM based Complex Network for Joint Acoustic Echo Cancellation and Speech Enhancement
    [BigData:Hadoop]:安装部署篇
    Ubuntu20.04安装k8s v1.21.0
    python教程:封装与解构
    【2023_10_22计算机热点知识分享】:人工智能
  • 原文地址:https://blog.csdn.net/UFOfuck/article/details/132766227