• Devops 开发运维高级篇之容器管理


    Devops 开发运维高级篇之容器管理

    安装docker

    Dockerfile镜像脚本入门制作

    Harbor镜像仓库安装及使用

     

     

    不过多解释docker直接秀基操

    安装docker:(jenkins服务器 20.0.0.30 、Harbor 20.0.0.50 、 生产服务器 20.0.0.60)

    命令操作可以见之前我的文章:docker 介绍及安装操作 - 隐姓埋名4869 - 博客园 (cnblogs.com)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    systemctl stop firewalld
    setenforce 0
    #安装依赖包
    yum -y install yum-utils device-mapper-persistent-date lvm2
     
    #设置阿里云镜像源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     
    #安装新版本docker
    yum -y install docker-ce
     
    #启动并设置开机自启动
    systemctl start docker.service
    systemctl enable docker.service
     
    #镜像加速下载(这里是我的阿里云的镜像加速)
    vim /etc/docker/daemon.json
     
    {
       "registry-mirrors": ["https://au0weiai.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      }
    }
     
     
    #加载重启
    systemctl daemon-reload
    systemctl restart docker
     
    #设置iPv4
    vim /etc/sysctl.conf
     
    net.ipv4.ip_forward=1
     
    #重启网卡重启docker
    sysctl -p
    systemctl restart network
    systemctl restart docker

     

    1
    2
    我是有时候下载失败报错,挂载一下
    mount /dev/sr0 /mnt

      

     

    Dockerfile镜像脚本入门制作

    Dockerfile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的组合,只要理解它的逻辑和语法格式,就可以编写Dockerfile了。

    简单点说,Dockerfile的作用:它可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。

    Dockerfile常见命令:

    命令

    作用

    FROM image_name:tag

     

    MAINTAINER user_name

    声明镜像的作者

    ENV key value

    设置环境变量 (可以写多条)

    RUN command

    编译镜像时运行的脚本(可以写多条)

    CMD

    设置容器的启动命令

    ENTRYPOINT

    设置容器的入口程序

    ADD source_dir/file dest_dir/file

    将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压

    COPY source_dir/file dest_dir/file

    和ADD相似,但是如果有压缩文件并不能解压

    WORKDIR path_dir

    设置工作目录

    ARG

    设置编译镜像时加入的参数

    VOLUMN

    设置容器的挂载卷

    具体用法可以看官网示例

    接下来我们用dockerfile制作微服务镜像

    我们利用Dockerfile制作一个Eureka注册中心的镜像

    上传Eureka的微服务jar包到linux 

    1
    2
    3
    4
    cd ~
    mkdir test
    cd test
    把idea打包的jar包拖进test文件里!

    1)编写Dockerfile:

    1
    vim Dockerfile
    1
    2
    3
    4
    5
    FROM openjdk:8-jdk-alpine
    ARG JAR_FILE
    COPY ${JAR_FILE} app.jar
    EXPOSE 10086
    ENTRYPOINT ["java","-jar","/app.jar"]

    2) 构建镜像

    1
    docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 .

    3) 查看镜像是否创建成功

    1
    docker images

    4) 创建容器

    1
    docker run -i --name=eureka -p 10086:10086 eureka:v1

    5)访问容器

    1
    http://20.0.0.50:10086

     

     

     

      

     

     

    Harbor镜像仓库安装及使用

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

    优势:

    • 提供分层传输机制,优化网络传输  Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定  传输的对象。
    • 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
    • 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
    • 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限, 具有更好的安全性。

     

    安装Harbor:

    #把docker-compose 拖进harbor服务器

    #然后给权限,并移动目录

    1
    2
    chmod +x docker-compose
    mv docker-compose /usr/local/bin

    #把harbor安装包拖进去harbor服务器然后解压

    1
    tar zxvf harbor-offline-installer-v1.9.2.tgz -C /opt

    #然后去改配置文件

    1
    2
    3
    4
    cd /opt/harbor
    vim harbor.yml
    hostname: 20.0.0.50
    port: 85

      

     

    #然后,安装Harbor(docker要处于启动状态)systemctl status docker 看一下

    1
    2
    ./prepare
    ./install.sh

    访问:http://20.0.0.50:85
    默认账户:admin
    默认密码:Harbor12345

     


    补充:
    启动harbor
    docker-compose up -d 启动
    docker-compose stop 停止
    docker-compose restart 重新启动

     

     

     

    Harbor上的操作:

    1) 创建项目

    Harbor的项目分为公开和私有的:

    公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。  私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。

    我们可以为微服务项目创建一个新的项目:

     

    2) 创建用户

     

     

    创建的用户为: lvbu / Lvbu1234

     

    3) 给私有项目分配用户进入tensquare项目->成员

     

    角色

    权限说明

    访客

    对于指定项目拥有只读权限

    开发人员

    对于指定项目拥有读写权限

    维护人员

    对于指定项目拥有读写权限,创建 Webhooks

    项目管理员

    除了读写权限,同时拥有用户管理/镜像扫描等管理权限

     

     

     

    4) 以新用户登录Harbor

     

     

    如何把之前创建的镜像上传到Harbor ?

     

    Docker要把Harbo加入信任列表中

    1
    vim /etc/docker/daemon.json
    1
    2
    3
    4
    {
      "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
    "insecure-registries": ["20.0.0.50:85"]
    } 

    然后重启docker

    1
    systemctl restart docker  

    然后登录harbor 用之前创建的lvbu账户

    1
    docker login -u lvbu -p Lvbu1234 20.0.0.50:85 

    然后在推送一下下:

    1
    docker push 20.0.0.50:85/tensquare/eureka:v1 

    再去Harbor刷新看一下:

     

     

     

    如何拉取呢?

    开一台webserver服务器,安装好docker

    然后修改配置:和之前的一样的

    1
    vim /etc/docker/daemon.json
    1
    2
    3
    4
    {
      "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
    "insecure-registries": ["20.0.0.50:85"]
    }

     

      

    然后一样~~:

    先登录在拉取:

    1
    docker login -u lvbu -p Lvbu1234 20.0.0.50:85

      

    登录上后直接在harbor找到项目镜像然后点击复制命令

    去执行就可以了:

    最后查看一下:docker images

     

     

     

  • 相关阅读:
    Linq-20220817更新
    远程连接Ubuntu中的Mysql
    计算机毕业设计Python+Django的个人博客系统(源码+系统+mysql数据库+Lw文档)
    InVideo AI:用人工智能轻松制作视频
    Ansible——template模块
    Columbus:一个基于API实现的子域名发现服务工具
    极智AI | 昇腾开发环境搭建 CANN & MindStudio (无坑版)
    Redis缓存满了咋办?什么叫近似LRU算法?为啥不使用真实LRU?
    Seata AT模式下的源码解析(一)
    matplotlib绘制动态正弦曲线
  • 原文地址:https://www.cnblogs.com/lvrui/p/15933685.html