IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker-review5:docker三剑客之machinecompose -> 正文阅读

[系统运维]docker-review5:docker三剑客之machinecompose

1. docker machine

1.1 machine简介

  • 是官方编排工具之一,负责在多平台上快速安装docker环境
  • 支持常规linux系统,虚拟化平台,openstack,公有云等不同环境下安装配置docker host
  • 基于go语言实现,目前在github上的维护地址:github.com/docker/machine

1.2 安装machine

server1作为管理端,创建machine:
首先获取包:docker-machine-Linux-x86_64-0.16.1

mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine
chmod +x /usr/local/bin/docker-machine

创建machine要求对远程主机server2作免密:

ssh-keygen
ssh-copy-id server2

创建主机:(l离线安装需要在目标主机提前安装号docker软件包)
docker-machine create --driver generic --generic-ip-address 172.25.38.2 server2
如果联网,会自动升级docker,比较慢
此时顺便在新建一个server3
此时,在server1上,可以通过docker-machine env server2进入server2上容器
总结创建流程:

  • ssh免密登陆远程主机
  • 安装docker软件包
  • 复制证书
  • 配置docker daemon
  • 启动docker
    请添加图片描述
    此时,需要进一步安装官方脚本,使得在切换docker服务器时能有提示:

yum inastall -y bash-*
准备三个bash文件:
请添加图片描述
放置目标目录:mv /root/*.bash /etc/bash_completion.d
在默认bash配置目录下添加:vim ~/.bashrc

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

PS1='[\u@\h \W$(__docker_machine_ps1)]\$'

退出重新登陆server1

docker-machine env server2
eval $(docker-machine env server2)

请添加图片描述
若要继续切换,则执行:eval $(docker-machine env server1)
若要退回server1,则logout,重新连接server1
请添加图片描述

1.2 利用machine在server上安装

传统的安装方法需要先在server上配置docker-ce源和Centos源
在利用machine在server上安装docker时,相关依赖性可以在本地仓库提前准备好
搭建本地docker-ce.repo仓库

在利用machine安装时均为执行脚本,首先获取脚本wget https://get.docker.com
并重新命名:mv index.html get-docker.sh

请添加图片描述
请添加图片描述
放到主机的apache发布目录下:
scp get-docker.sh 172.25.38.250:/var/www/html/

在主机上设置docker-ce需要的各种变量
请添加图片描述

在将脚本放置与apache发布目录
在server1上对server3进行免密登陆
执行脚本:
若是用网络安装:docker-machine create --driver generic --engine-install-url "https://get.docker.com" --generic-ip-address 172.25.38.3 server3
离线安装:docker-machine create --driver generic --engine-install-url "http://172.25.38.250/get-docker.sh"" --generic-ip-address 172.25.38.3 server3
请添加图片描述
在此还需要打开桥接参数:

scp /etc/sysctl.d/docker.conf server3:/etc/sysctl.d/
sysctl --system

2. docker compose

2.1 简介

  • 微服务架构的应用系统一般会包括多个微服务,每个微服务一般都会部署多个实例,若每个微服务都要手动启停,则会明显效率过低,且维护工作量巨大
  • docker compose时一种编排服务,基于python实现,时一个用于在docker上自定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用
  • 用户可以轻松用一个配置文件定义一个或多个容器应用,然后使用一条指令安装这个应用的所有依赖,完成构建
  • 主要解决的时容器与容器之间如何管理编排的问题

两个重要概念:

  • 服务(service):一个应用的容器,实际上可以包含若干运行相同镜像的容器实例。
  • 项目(project):由一组关联的应用容器组成一个完整业务单元,在docker-compose.yml文件中定义
    请添加图片描述
    安装
  1. 方法1,官方,速度慢
    curl -L github
    chmod +x /usr/local/bin/docker-compose
  2. 方法2,阿里云,速度快
    https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/
    下载后放置上述方法1位置

docker-compose.yml属性
请添加图片描述

官方文档

2.1 示例

在此做一个由haproxy控制两个nginx代理服务器的容器化实验,均在server1上:
首先利用docker pull拉取nginx和haproxy镜像
在默认目录下,新建compose文件夹,并编写一个docker-compose.yml文件
文件中,定义了使用的两个nginx的镜像,网络,挂载卷,以及做代理的haproxy的镜像,网络,端口,挂载卷,配置文件

version: "3.9"
services:
  web1:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web1/:/usr/share/nginx/html
  web2:
    image: nginx
    networks:
      - mynet
    volumes:
      - ./web2/:/usr/share/nginx/html

  haproxy:
    image: haproxy
    networks:
      - mynet
    ports:
      - "80:80"
    volumes:
      - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
  mynet:

在compose内新建haproxy文件夹,内包含haproxy的配置文件:

global
        maxconn         65535
        stats socket    /var/run/haproxy.stat mode 600 level admin
        log             127.0.0.1 local0
        uid             200
        gid             200
        #chroot          /var/empty
        daemon

defaults
        mode            http
        log             global
        option          httplog
        option          dontlognull
        monitor-uri     /monitoruri
        maxconn         8000
        timeout client  30s
        retries         2
        option redispatch
        timeout connect 5s
        timeout server  5s
        stats uri       /stats

frontend public
        bind            *:80 name clear
        #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem

        #use_backend     static if { hdr_beg(host) -i img }
        #use_backend     static if { path_beg /img /css   }
        default_backend dynamic

backend dynamic
        balance         roundrobin
        server          app1 web1:80 check inter 1000
        server          app2 web2:80 check inter 1000

启动时,在compose文件内,因为包含了docker-compose.yml文件,所以可以用docker-compose up进行启动
请添加图片描述

启动后,在浏览器中可看到:
请添加图片描述
此时,可使用docker-compose stop web1关闭部分容器
强制删除:kill
卸载rm

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:29:14  更:2021-08-07 12:29:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 10:48:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码