www.91084.com

GVKun编程网logo

Docker-Compose 快速搭建博客(docker-compose.yml)详细分析(docker compose yml详解)

17

在这里,我们将给大家分享关于Docker-Compose快速搭建博客的知识,让您更了解docker-compose.yml详细分析的本质,同时也会涉及到如何更有效地25.dockercompose简介

在这里,我们将给大家分享关于Docker-Compose 快速搭建博客的知识,让您更了解docker-compose.yml详细分析的本质,同时也会涉及到如何更有效地25.docker compose 简介 和 docker-compose.yml 参数介绍、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本、Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码、Docker Compose:没有这样的图像 - Docker Compose: No such image的内容。

本文目录一览:

Docker-Compose 快速搭建博客(docker-compose.yml)详细分析(docker compose yml详解)

Docker-Compose 快速搭建博客(docker-compose.yml)详细分析(docker compose yml详解)

  • docker-compose.yml
    • version: ''3.3''
      services:
         db:
           image: mysql:5.7   #docker run -itd mysql:5.7
           volumes:
              - db_data:/var/lib/mysql  #采用的是卷标的形式挂载(注意:- db_data是参数,可以变,自定义,必须与下面对应)
            restart: always    #自动重启,保证服务在线
            environment:
                MYSQL_ROOT_PASSWORD: somewordpress  #指定环境变量 docker -itd -e MYSQL_ROOT_PASSWORD= somewordpress
                MYSQL_DATABASE: wordpress
                MYSQL_USER: wordpress
                MYSQL_PASSWORD: wordpress
         wordpress:
            depends_on:
                - db # - db 是参数,合起来的意思是只有当上面的mysql数据库安装成功后,这个wordpress才可以 被安装,还有一个功能,就是docker --link 将上面的mysql数据库,与这个wordpress应用连起来
            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: {}
  • docker-compose 有两种方式可以设置 volumes
    • 使用具体路径直接挂载到本地,特点就是直观
    • 使用卷标的形式,特点就是简洁,但是不知道数据到底挂载在本地的什么位置,需要通过卷标查看
      • docker volume ls
      • docker volume inspect wordpress_db_data

25.docker compose 简介 和 docker-compose.yml 参数介绍

25.docker compose 简介 和 docker-compose.yml 参数介绍

1. docker compose概念  文档  https://docs.docker.com/compose/compose-file/compose-versioning

  一个基于 docker 的工具

  可以通过一个 yml 文件定义多容器的 docker 应用

  通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器

2 docker compose 版本 2 与 版本 3 的区别

  最大的区别

    version 2 只能用于单机

    version 3 可用于多机

3. docker-compose.yml

  

    Services

      一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建

      service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用

      eg :

      docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier  postgres:9.4

      services:

        db:                #service 的名称为 db

          image: postgres:9.4      #service image 为 postgres:9.4  这是从远程拉取的

          volumes:

            - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

          networks:

            - back-tier        #网络为 back-tier

      eg2:

      docker run -d --link db --link redis --network back-tier  worker

      services:

        worker:

          build: ./worker

          links:

            - db

            - redis

          networks:

            - back-tier        #在同一个网络上 不需要links

    Volumes:

      上面 的

      volumes:

       - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

      会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述

      类似于 docker volume create db-data

      eg:

      volumes:

        db-data:

    Nerworks:

      上面 的

      networks:

        - back-tier        #在同一个网络上 不需要links

      会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述

      类似于  docker nerwork create -d bridge back-tier

      networks:

        front-tier:

          driver: bridge

        back-tier:

          driver: bridge

4编写 docker-compose.yml

# docker compose api 版本

version: ''3''

 

services:

# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql

  wordpress:

#image 为 word press

    image: wordpress

#本地 8888 端口 映射 容器 80 端口

    ports:

      - 8888:80

#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e

    environment:

      WORDPRESS_DB_HOST: mysql

      WORDPRESS_DB_PASSWORD: root

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

  mysql:

    image: mysql:5.7.27

# 数据库 root 的 连接密码 和 所使用的数据库名称

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: wordpress

# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql

    volumes:

      - mysql-data:/var/lib/mysql

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

# 定义 volumes

volumes:

  mysql-data:

 

# 定义 networks

networks:

  my-bridge:

    driver: bridge

 

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本

通过 docker-compose 启动容器,报错:

ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.

  

升级 Docker 过于麻烦,只能降 docker-compose 的版本。

先看一下我们已经安装的 Docker 版本:

[root@Redmine-186 docker-compose]# docker -v
Docker version 1.7.1, build 786b29d/1.7.1

  经查 Docker Compose Github Docs,发现 docker-compose 1.5.2 版本是兼容 Docker 1.7.1 的:Note that Compose 1.5.2 requires Docker 1.7.1 or later.

  好了,开始降级 docker-compose,先卸载:

# pip uninstall docker-compose

  

再安装指定版本:

# pip install docker-compose==1.5.2

  至此,docker-compose 降版本成功!

docker-compose.yml 版本问题

解决完 docker-compse 版本问题适配之后,对着已有的 docker-compose.yml 执行 “,会提示不能正常识别 docker-compose.yml 文件中的内容。究其原因,是因为我们的 docker-compose 1.5.2 只支持 V1 版本的 docker-compose.yml ,那么好,把现在 V2 版本的 docker-compose.yml 改成 V1 版本的格式。

V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml。

先看文档:Compose file versions and upgrading。

V1 版本的 docker-compose.yml 文件格式主要区别就是: 
- 没有开头的 version 声明 
- 没有 services 声明 
- 不支持 depends_on 
- 不支持命名的 volumes, networks, build arguments 声明 
- 其他我没用到的所以没细究的区别

附录

  • How To Install Docker on CentOS 6
  • Docker and docker-compose in CentOS 6
  • 关于 pip 安装时提示 pkg_resources.DistributionNotFound 错误问题
  • CentOS 升级 Python2.7
  • ERROR: The Docker Engine version is less than the minimum required by Compose
  • Docker Compose Github Docs
  • Compose file versions and upgrading

Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码

Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码

场景

Docker-Compose 简介与 Ubuntu Server 上安装 Compose:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301

Docker Compose 基本使用 - 使用 Compose 启动 Tomcat 为例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080

Docker Compose 部署项目到容器 - 基于 Tomcat 和 mysql 的商城项目 (附源码和 sql 下载):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100941366

在上面实现基本的 Compose 的操作的基础上,实现使用 Docker Compose 搭建 Nexus3。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

version: ''3''
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus3
    ports:
      - 8081:8081
    volumes:
      - /usr/local/docker/nexus/nexus-data:/nexus-data

 

Docker Compose:没有这样的图像 - Docker Compose: No such image

Docker Compose:没有这样的图像 - Docker Compose: No such image

问题:

When I run docker-compose up , I get this error:当我运行docker-compose up ,出现此错误:

root@ubuntu:/home/benson/Docker/HaproxyMy# docker-compose up
Recreating 950ddc308278_950ddc308278_950ddc308278_950ddc308278_950ddc308278_haproxymy_webb_1
Recreating 485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_haproxymy_webc_1
Recreating 2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_haproxymy_weba_1

ERROR: for webb  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

ERROR: for webc  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

ERROR: for weba  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

docker-compose.yml : docker-compose.yml

weba:
    build: ./web
    expose:
        - 80

webb:
    build: ./web
    expose:
        - 80

webc:
    build: ./web
    expose:
        - 80


haproxy:

    image: haproxy:latest

    volumes:

        - ./haproxy:/haproxy-override
        - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    links:

        - weba
        - webb
        - webc
    ports:

        - "80:80"
        - "70:70"
    expose:

        - "80"
        - "70"

解决方案:

参考: https://stackoom.com/en/question/2X9dc

今天关于Docker-Compose 快速搭建博客docker-compose.yml详细分析的介绍到此结束,谢谢您的阅读,有关25.docker compose 简介 和 docker-compose.yml 参数介绍、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本、Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码、Docker Compose:没有这样的图像 - Docker Compose: No such image等更多相关知识的信息可以在本站进行查询。

本文标签: