Docker-compose

一个项目可以由多个服务(容器)关联而成,Compose面向项目进行管理。
同时启动多容器环境并且解决容器之间依赖关系

一、docker-compose安装部署

GitHub_docker-compose版本
docker-compose官方指导

环境:docker已安装,epel源已经存在
Github docker-compose最新版本:2.6.1

1. 安装docker-compose三种途径:
	1) pip3安装:pip3 install docker-compose
	
	2) 二进制安装,GitHub下载对应安装包,添加执行权限
	mv docker-compose-linux-x86_64 /usr/bin/docker-compose
	chmod a+x docker-compose && docker-compose version
	
	3) yum install -y doccker-compose(版本较低,默认Version: 1.18.0)

二、docker-compose命令

常用命令:down、up -d、build
1. build 构建(重新构建)项目中的服务容器
2. config 检测compose文件的错误
3. up   # 创建并启动服务
4. down # 停止和删除所有容器、网络、镜像和卷
5. images 列出项目中所包含的镜像
6. logs 查看服务容器的日志
7. kill 发送 SIGKILL 信号来强制停止服务容器
8. port 查看某个容器端口所映射的公共端口
9. ps 列出项目中目前的所有容器
10. restart 重启项目中的服务
11. rm 	# 删除所有停止状态的服务容器
12. run # 一次性运行容器,等于 docker run --rm 
13. scale 设置指定服务运行的容器个数,横向扩容
	docker-compose scale nginx=2  # 需要关闭yaml指定的端口映射,不然会冲突
14. stop 停止处于运行状态的容器
15. start 启动被stop的服务容器
16. top 查看各个服务容器内运行的进程
17. pause 暂停一个服务容器
18. unpause 恢复处于暂停状态中的服

命令详解可参考链接

三、docker-compose

1. docker-compose 将所管理的容器分为三层,分别是工程(project), 服务(service)以及容器(container)
2. 不支持跨主机进行容器调度的功能
3. docker只是通过server_name找到对应的容器
   k8s 的server_name有自己的网络及端口
4. 发现本地镜像和haproxy值不一样,通过docker-compose pull 拉取最新的镜像
查看指定端口号是否映射
[root@szx docker-compose]# docker-compose port nginx 443
0.0.0.0:443
[root@szx docker-compose]# docker-compose port nginx 80
0.0.0.0:80
参数解析
-f指定docker-compose.yml/yaml配置文件路径
config -q查看当前配置,没有错误不输出任何信息

在这里插入图片描述

四、docker-compose示例

1、nginx服务测试

1) docker-compose.yaml文档

mkdir docker-compose
cd docker-compose/

[root@szx docker-compose]# vim docker-compose.yaml
version: '3'
services:
  nginx:
    image: nginx:1.22.0
    container_name: nginx-web1
    expose:
      - 80
      - 443
    ports:
      - "80:80"
      - "443:443"

2) 验证并启动

1. 检查配置文件是否有问题
[root@szx docker-compose]# docker-compose config -q  # 无错误不输出
2. 构建
[root@szx docker-compose]# docker-compose up -d        # 创建并启动服务,后台启动
  up          Create and start containers
默认寻找当前目录下的docker-compose.yaml文件
2、redis服务
[root@szx docker-compose]# vim docker-compose.yaml
services:
  redis:
    image: redis:latest
    container_name: redis-web1
    expose:
      - 6379
    ports:
      - "6379:6379"
docker-compose up -d # 启动
docker ps # 查看启动的容器
3、haproxy–>nginx–>tomcat服务测试

在这里插入图片描述

version: '3'
services:
  haproxy:
    image: haproxy:2.6.1
    container_name: haproxy-web1
    expose:
      - 80
      - 9000
    ports:
      - "80:80"
      - "9000:9000"
    links:
      - nginx

  nginx:
    image: nginx_compile:v1
    container_name: nginx-web1
    expose:
      - 80
      - 443
    links:
      - tomcat01
      - tomcat02

  tomcat01:
    image: tomcat-web:app1
    container_name: tomcat-app1
    expose:
      - 8080
    volumes:
      - /data/Dockerfile/web/tomcat/tomcat01/myapp:/apps/tomcat/webapps/myapp

  tomcat02:
    image: tomcat-web:app2
    container_name: tomcat-app2
    volumes:
      - /data/Dockerfile/web/tomcat/tomcat02/myapp:/apps/tomcat/webapps/myapp
    expose:
      - 8080

配置:

1.镜像:haproxy:2.6.1、nginx_compile:v1、tomcat-web:app1、tomcat-web:app2(由本地dockerfile文件创建的)
可以从harbor或者远程服务器直接pull下来
2.haproxy:
server web1 nginx:80 check inter 3000 fall 2 rise 5
3.nginx
vim nginx.conf   # 进行转发给tomcat
    upstream tomcat{
		server tomcat01:8080;
		server tomcat02:8080;
    }

    location /linux {
        proxy_pass http://tomcat/;
    }

启动报错分析

1.
[root@localcentos ~]# telnet 124.222.155.194 6379
telnet: connect to address 124.222.155.194: Connection refused

解决:docker-compose.yml文件的映射端口写错了

2.docker-compose up -d 报错
1(root) Additional property services_nginx is not allowed
解决:docker-compose.yaml的首部定义services字段

2)Error response from daemon: Conflict. The container name "/nginx-web1" is already in use by 
container "a1a1b0580065b464ec3115fc2ff794c0f9ea01d341029a5f279feff8383a6ee5". 
You have to remove (or rename) that container to be able to reuse that name.
解决:yaml文件里面有重名服务,删了或改server名
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值