• 微服务之docker(一)


    一.docker介绍及使用

    1.docker简介

    (1)Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

    (2)使用go语言编写,在Linux容器基础上进行的封装。

    (3)优点:

    a.实现快速部署服务或应用并启动(尤其针对微服务集群式部署或拓展场景)。

    b.实现虚拟化及完整的资源隔离(针对高配服务器可以实现虚拟化隔离部署,类似于虚拟机,同一台服务器上部署多个相同或不同的服务)。

    c.一次编写,多处运行(限制条件:Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)。

    2.docker使用场景

    开箱即用、快速部署、可移植性强、环境隔离

    (1)提供一次性的完整环境(例如安装MySQL,需要安装其他依赖库,如果使用docker则可以通过镜像直接运行启动)。

    (2)快速动态扩容(使用docker将应用制作成镜像,实现快速部署并启动)。

    (3)可以在一台机器上模拟出多个微服务并启动应用(组建微服务架构)。

    (4)实现资源隔离和共享。

    3.docker核心概念

    仓库—>镜像—>容器

    (1)仓库(registeries):用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服。

    镜像仓库: 配置国内镜像仓库:https://blog.csdn.net/zzy1078689276/article/details/77371782

    仓库分为公共镜像仓库和私有镜像仓库两种,其中公共镜像仓库分为官方镜像仓库和私有镜像仓库。

    公共镜像仓库:
    官方:https://hub.docker.com/,基于各个软件开发或者有软件提供商开发的
    非官方:其他组织或者公司开发的镜像,供大家免费试用

    私有镜像仓库:
    用于存放公司内部的镜像,不提供给外部试用;

    SpringCloud 开发了一个支付系统 -》做成一个镜像 (操作系统+软件运行环境+用户程序)

    (2)镜像(images):容器运行时的只读模板,包括操作系统+软件运行环境+用户程序;类似于Java中的class类。

    (3)容器(containers):根据镜像生成容器,包含了某个应用运行所需要的全部环境,类似于Java中new的具体实例。

    4.docker安装及常用操作命令

    (1)安装:

    Linux云服务器centOS安装docker(阿里云ECS服务)

    lsb_release -a  此命令用来显示服务器版版本等相关信息(lsb是Linux Standard Base的缩写)

    阿里云安装docker手册:
    https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY

    常见问题:
    https://blog.csdn.net/daluguishou/article/details/52080250

    (2)常用操作命令:

    a.搜索镜像:docker search xxx 镜像名称

    b.列出当前系统已存在的镜像:docker images

    c.拉取或获取镜像:docker pull xxx   (xxx是具体某个镜像名称(格式 REPOSITORY:TAG);REPOSITORY:表示镜像的仓库源,TAG:镜像的标签)

    d.运行容器:

    docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 rabbitmq:management

    docker run 运行一个容器  (首先会从本地寻找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)

    -d 后台运行

    --name 给运行的容器起别名(此命令可以不加,视个人使用情况而定)

    -p 端口映射

    rabbitmq:management  (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的

    e.列举当前已运行的容器:docker ps

    f.检查容器内部信息:docker inspect 容器名称

    g.删除镜像:docker rmi IMAGE_NAME (如果有容器使用该镜像是无法直接删除的,强制移除镜像不管是否有容器使用该镜像 增加 -f 参数)

    h.停止某个容器:docker stop 容器名称

    i.启动某个容器:docker start 容器名称

    j.移除(删除)某个容器: docker rm 容器名称/容器ID (容器必须是停止状态,如果要强制删除增加 -f 参数)

    参考文档:https://blog.csdn.net/permike/article/details/51879578

    5、Docker部署Nginx服务器实战

    1、获取镜像
    docker run (首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)

    docker search nignx
    2、列举
    docker images
    3、拉取
    docker pull nignx
    3、启动
    docker run -d --name "nginx1" -p 8088:80 nginx
    docker run -d --name "nginx2" -p 8089:80 nginx
    docker run -d --name "nginx3" -p 8090:80 nginx
    4、访问
    如果是阿里云服务,记得配置安全组,相当于一个防火墙

    6、使用阿里云搭建自己的镜像仓库

    1、阿里云镜像仓库:https://dev.aliyun.com/search.html

    点击管理控制台-》初次使用会提示开通,然后设置密码(建议此处用自己的账号登录后访问此文档)

    2、使用阿里云私有镜像仓库
    1)登录: docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.com

    2) 推送本地镜像:
    docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[镜像版本号]
    例子:
    docker tag 2f415b0e9a6e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

    docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

    3)拉取镜像
    线上服务器拉取镜像:
    docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.com

    docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

    启动容器:
    docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e

  • 相关阅读:
    纯js面试题
    js面试题汇总:
    css面试题-圣杯布局
    6.1 React组件 Component的两个问题
    7.1 React异步加载
    vscode插件配置jsx:
    6.2 React renderProps 和 HOC组件优化
    2.5 React高阶组件HOC
    04 Python学习之数据类型-bytes
    03 Python学习之Python基础
  • 原文地址:https://www.cnblogs.com/fujingtao5470/p/12268256.html
Copyright © 2020-2023  润新知