docker compose是什么,如何部署


docker compose 给容器做单机编排的
docker swarm docker集群管理调度工具,可以多台主机构建成一个docker集群,用户可以通过api接口管理多个主机上的docker

Docker-compose 简介

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。

compose 部署

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

1.下载

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

2.安装

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

3.查看版本

docker-compose --version

在这里插入图片描述

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

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。
使用 YAML 时需要注意下面事项:
1.不支持制表符 tab 键缩进,需要使用空格缩进
2.通常开头缩进2个空格
3.字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 
4.用 # 号注释
5.如果包含特殊字符用单引号 '' 引起来
6.布尔值必须用引号 "" 括起来

三.Docker Compose配置常用字段

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

四. Docker Compose 常用命令

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

五. Docker Compose 文件结构
```javascript
yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml   	#创建模板脚本
├── nginx
│?? ├── Dockerfile    	 	#创建容器脚本
│?? ├── nginx-1.12.0.tar.gz   	#复制源码包
│?? └── run.sh      		#启动服务脚本
└── wwwroot
    └── index.html     		#站点网页

在这里插入图片描述

1.准备依赖文件

cd /opt
mkdir -p compose_nginx/nginx compose_nginx/wwwroot
cd compose_nginx/nginx
cp nginx-1.12.0.tar.gz /opt/compose_nginx/nginx

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
chmod 755 run.sh

vim Dockerfile
FROM centos:7	#基于基础镜像
MAINTAINER this is nginx image <sk>	#用户信息

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

ADD nginx-1.12.0.tar.gz /opt/		#上传nginx软件压缩包,并解压

WORKDIR /opt/nginx-1.12.0	#指定工作目录
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

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

方法一:

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf   #关闭 nginx 在后台运行

ADD run.sh /run.sh	#添加宿主机中run.sh到容器中
CMD ["/run.sh"]

方法二:

ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

cd /opt/compose_nginx/
echo "<h1>this is test web</h1>" > wwwroot/index.html

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

vim 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:

cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d

在这里插入图片描述

选项说明
-f, --file FILE使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME指定项目名称,默认使用目录名称
-d在后台运行
docker ps -a
CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
d87fea461473   compose_nginx_nginx   "/usr/local/nginx/sb…"   27 seconds ago   Up 26 seconds  0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

cd /opt/compose_nginx/
docker-compose ps     #必须在docker-compose.yml所在目录执行此命令

浏览器访问

http://192.168.154.80:1216

在这里插入图片描述

搭建本地私有仓库

1.首先下载registry 镜像

docker pull registry
2.在daemon.json文件中添加私有镜像仓库地址
vim /etc/docker/daemon. json
{
" insecure-registries": ["192.168.154.80:5000"],	#添加,注意用逗号结尾
"registry-mirrors": ["https://6ijb8ube.mirror.aliyuncs.com"]
}
systemctl restart docker.service

3.运行registry 容器

docker run -itd -v /data/ registry:/var/lib/registry -p 5000:5000 -- restart=always --name registry registry: latest
命令字说明
-itd在容器中打开一个伪终端进行交互操作,并在后台运行
-v把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p映射端口;访问宿主机的5000端口就访问到registry容器的服务了
–restart=always这是重启的策略,在容器退出时总是重启容器
–name registry创建容器命名为registry
registry:latest这个是刚才pull下来的镜像

Docker容器的重启策略

策略说明
no默认策略,在容器退出时不重启容器
on-failure在容器非正常退出时(退出状态非0),才会重启容器
on- failure:3在容器非正常退出时重启容器,最多重启3次
always:在容器退出时总是重启容器
unless-stopped在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就经停止了的容器

为镜像打标签

docker tag centos:7 192.168.154.80:5000/centos:v1

上传到私有仓库

docker push 192.168.154.80:5000/centos:v1

列出私有仓库的所有镜像

curl http://192.168.154.80:5000/v21 catalog

# 私有仓库的centos 镜像有哪些tag

curl http://192.168.154.80:5000/v2/centos/tags/list

先删除原有的centos 的镜像,再测试私有仓库下载

docker rmi -f 8652b9f0cb4c 
docker pull 192.168.154.80:5000/centos:v1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值