docker—compose搭建

Posted 丁CCCCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker—compose搭建相关的知识,希望对你有一定的参考价值。

一、概述

1.1 compose

  • 作用是给容器做单机编排
  • docker官方的开源项目
  • 三层组成,分别是工程(project),服务(service)以及容器(container)
  • Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul
  • Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件
  • 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器
  • Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)
  • Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理

1.2 常用字段

字段描述
build指定 Dockerfile 文件名
dockerfile构建镜像上下文路径
context可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法 scale
deploy指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment添加环境变量
networks加入网络
ports暴露容器端口,与 -p 相同,但端口不能低于 60
volumes挂载宿主机路径或命令卷
hostname容器主机名
restart重启策略

1.3 常用命令

字段描述
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

1.4 YAML 文件格式及编写注意事项

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多

YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来

使用 YAML 时需要注意下面事项

  • 不支持制表符 tab 键缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
  • 用 # 号注释
  • 如果包含特殊字符用单引号 ‘’ 引起来
  • 布尔值必须用引号 “” 括起来

二、服务搭建

2.1 环境安装

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose

在线下载

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

安装

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

查看版本

docker-compose --version

2.2 准备依赖文件

  • mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot

  • echo “<h1>wwwwwwww</h1>” > /opt/compose_nginx/wwwroot/index.html

  • cd /opt/compose_nginx/nginx

    • 上传nginx安装包
  • vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx
  • vim Dockerfile
#基于基础镜像
FROM centos:7

#用户信息
MAINTAINER this is nginx image <ccc>

#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx

#上传nginx软件压缩包,并解压
ADD nginx-1.12.2.tar.gz /usr/local/src/

#指定工作目录
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \\
--prefix=/usr/local/nginx \\
--user=nginx \\
--group=nginx \\
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH

#指定http和https端口
EXPOSE 80
EXPOSE 443

#关闭 nginx 在后台运行
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
	
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

2.3 编写配置文件docker-compose.yml

  • vim /opt/compose_nginx/docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - lnmp
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:

2.4 运行安装

  • cd /opt/compose_nginx/

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

    • -f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
    • -p, --project-name NAME :指定项目名称,默认使用目录名称
    • -d :在后台运行

2.5 测试

  • docker ps -a

  • cd /opt/compose_nginx/

  • docker-compose ps

    • 必须在docker-compose.yml所在目录执行此命令

浏览器访问:http://192.168.253.33:1216

以上是关于docker—compose搭建的主要内容,如果未能解决你的问题,请参考以下文章

Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

Docker Compose搭建LAMP环境

Docker搭建Gitlab代码管理平台

docker-compose 搭建 Kafka (1)

二 用docker compose搭建kafka集群

Docker-docker环境搭建&docker-compose环境搭建