• 技术文章 >运维 >Docker

    docker基础之compose文件结构以及安装工具(实例详解)

    长期闲置长期闲置2022-02-07 17:39:40转载291
    本篇文章给大家带来了docker中compose的相关知识,其中包括了compose文件结构以及安装docker compose工具的相关知识,希望对大家有帮助。

    什么是docker compose?

    docker compose是一个容器编排功能,将运行在不同容器中的不同服务器进行编排,联合在一起。

    可以用于对多数容器进行统一管理:包括但不限于:网络、端口、挂载等可以用于实现容器的集群化,相关于容器、镜像的一系列操作,compose都可以进行操作,就是一个对于容器进行管理的功能

    一、compose文件结构

    1、yml文件

    compose中文件结构通常是指yml文件的结构,那什么是yml文件?

    yml文件是一种键值对格式的文件。

    yml文件对于格式非常的敏感,需要注意以下几种事项:

    1. 只识别空格进行的缩进,不识别tab键的缩进形式
    2. 通常开头部分缩进两个空格
    3. 字符后面缩进一格空格,包括但不限于:冒号、逗号、横杠等这些字符。字符后面必须缩进一格
    4. 支持使用#来进行注释
    5. 如果包含特殊字符,需要使用单引号引用起来
    6. 布尔值必须使用引号括起来

    例如:

      house:
        family:
          name: Doe
          parents: 
            - John
            - Jane
          children: 
            - Paul
            - Mark
            - Simone
        address: 
          number: 34
          street: Main Street
          city: Nowheretown
          zipcode: 1234

    yml文件格式例如上面,需要进行一级级的对应,不同级之间,有两个空格的间隔。

    注:如果在一个层级中,一个键有多个值,可以使用在下一个层级,同样是空余两格,以短横杠起始,有几个值写几个端横杠

    2、Compose配置常用的字段

    字段描述
    build dockerfile centext指定Dockerfile文件名构建镜像上下文的路径
    images指定镜像
    command执行命令,覆盖默认命令
    container name指定容器名称,由于容器名称是唯一的。如果指定自定义名称,则是无法创建scale
    deploy指定部署和运行服务相关配置,只能再Swarm模式使用
    environment添加环境变量
    networks加入网络
    ports暴露容器端口,与-p相同,但是端口号必须大于60
    volumts挂载宿主机路径或者命令卷
    restart重启策略,默认no,always, on-failure,unless-stoped
    hostname容器主机名

    build:构造一个镜像时候的一个定义方式

    dockerfile:方式是使用dockerfile的方式构建

    context:服务docerfile文件的路径

    images:可以指定使用的镜像名字,例如:images: 镜像名,注意:后面有个空格

    command:执行一个语句

    container name:用于指定容器的名称,因为容器名字是唯一的。如果指定自定义名称,则无法scale(设置副本集)

    #副本集:将一个镜像制作成多个容器,这多个容器之间,运行环境等方面都是一模一样。当容器架构中的一个容器挂掉之后,可以直接启动一个相同的容器,用以保持副本集的数量,这是副本集的概念,同样也是K8s的核心。可以提高微服务的速度,提高容灾,高并发性能

    deploy:是一个控制器,在k8s中是控制管理副本集的一个插件

    restart:一种重启策略,默认是关闭之后不启动,如果always则是不管是手动关闭还是非手动关闭,都会自动把关闭状态的容器启动,unless-stoped只拉取关闭状态的容器,on-failure,只会启动容器返回码非零的容器

    3、Compose在外部的常用命令

    字段描述
    build重新构建一个镜像信息
    ps列出容器当前docker compose所控制的容器
    up创建以及启动容器
    exec在容器内执行命令
    scale指定一个服务器的启动数量,相当于副本集的数量
    top显示容器进程,所有docker compose控制的进程启动的容器
    logs查看容器的输出信息
    down删除容器、网络、数据卷和镜像
    stop/start/restart停止/启动/重启容器服务

    docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]

    docker-compose选项

    1. –verbose:输出更多调试信息
    2. –version:打印版本并退出
    3. -f /–file FILE:使用特定的compose模板文件,默认为docker-compose.yml
    4. -p /–project-name NAME:指定项目名称,默认使用目录名称

    二、安装docker compose工具

    1、下载

    curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

    首次连接下载的时候,可能会提示失误或者连接不上,可能是因为网络原因,可以多试几次

    2、添加权限

    文件在刚下载之后,默认是没有执行权限的,所以需要手动添加执行权限

    chmod +x /usr/local/bin/docker-compos

    3、运行docker-compose

    docker-compose

    可以看到,现在已经正常执行了

    三、编译镜像

    手动创建下面的文件(dockerfile文件之前有的话,直接拉取过来也是可以的)

    tree
    .
    ├── docker-compose.yml
    ├── nginx
    │   ├── Dockerfile
    │   ├── nginx-1.12.0.tar.gz
    └── wwwroot
        └── index.html

    其中yml文件内部

    cat docker-compose.yml
    
    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 1321:80
          - 1707:443
        networks:
          - cluster
        volumes:
          - ./wwwroot: /usr/local/nginx/html
    networks:
      cluster:

    nginx的dockerfile文件

    cat ./nginx/Dockerfile
    
    FROM centos:7
    ADD nginx-1.12.0.tar.gz /tmp
    RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make &> /dev/null \
        && useradd -M -s /sbin/nologin nginx \
        && cd /tmp/nginx-1.12.0/ \
        && ./configure \
        --prefix=/usr/local/nginx \
        --user=nginx \
        --group=nginx \
        --with-http_stub_status_module &> /dev/null \
        && make &> /dev/null \
        && make install &> /dev/null
    VOLUME ["/usr/local/nginx/html"]
    EXPOSE 80
    CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

    index.html文件中就是自己配置的网页信息,就不多做介绍了

    确定之后,编译

    docker-compose -f docker-compose.yml up -d

    查看运行结果

    docker ps -a
    
    CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                      PORTS                                                                        NAMES
    da38007f09ab   dockercompose_nginx   "/usr/local/nginx/sb…"   About a minute ago   Up About a minute           0.0.0.0:666->80/tcp, :::666->80/tcp, 0.0.0.0:667->443/tcp, :::667->443/tcp   dockercompose_nginx_1
    #可以看到,这个端口信息就是我们在yml文件中设置的端口信息,直接在这个生效了
    
    docker images
    
    REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
    dockercompose_nginx       latest    b1e4b9dfa72d   3 minutes ago   478MB

    访问网址端口,查看该网站页面

    curl 192.168.75.51:666
    hello
    #显示结果
    cat ./wwwroot/index.html
    hello

    推荐学习:《docker视频教程

    以上就是docker基础之compose文件结构以及安装工具(实例详解)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:docker
    上一篇:docker更新容器使用什么命令 下一篇:docker中的lamp是什么
    PHP编程就业班

    相关文章推荐

    • docker什么情况使用pull命令• 什么是fastdfs与docker• docker启动失败怎么查看日志• docker用什么命令来查看运行的容器• docker是什么架构

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网