• docker day05


    昨日内容回顾:
        - dockerfile的优化
            - 编译速度
                - 充分利用缓存镜像,将不常变更的指令放在靠前的位置;
                - 在不影响功能的前提下,最好是可以合并多条指令,可以减少中间容器或者镜像的产生;
                - 软件源最高更换国内较稳定的软件源,相比国外的软件源速度会更快;
                - 使用".dockerignore"文件忽略Dockerfile编译不需要的文件;
                
            - 镜像体积大小
                - 删除无用的缓存文件,比如说已经安装的编译器,软件包,缓存等信息;
                - 如果软件能够在较小的基础镜像运行起来,建议使用小镜像,比如alpine,busybox;
                - 基于多阶段构建,将需要的软件包进行拷贝即可;
        - 进阶知识
            - namespace:
                对资源进行隔离,包括但不限于: ipc,user,mnt,net,uts,pid....
            - chroot:
                将程序所在一个目录路径下,指定为个目录为根目录。
            - cgroup:
                对资源限制,包括但不限于cpu,memory,disk,...
            - overlay2
                联合文件系统,lower(只读),upper(读写),work(临时存储文件),merged(给用户的展示层)
            - docker 容器相关的命令补充:
                - docker logs
                    信息输出到"/dev/stderr","/dev/stdout"
                - docker run  --restart
                    no:
                        不重启。
                    always:              *****
                        总是重启。
                    unless-stop:         ***
                        除非重启前容器已经处于退出状态,否则也会重启。
                    on-failure
                        等效于always。
                    on-failure:3
                        表示重启次数达到3次后就不在重启。
                        
        - docker网络
            - 单机网络
                - none
                    不分配和任何网卡。
                - host
                    和宿主机共享网络空间。效率最高。
                - bridge
                    桥接模式,默认模式。会生成一对虚拟网卡。
                - container
                    使用某个已存在容器的网络空间。
                - custom
                    自动以网络。
                    
            - 跨主机网络
                - overlay 
                    叠加网络。
                    
                    

    今日内容:
        - docker-compose
        - docker registry
        - harbor
        - hub的仓库使用
        - prometheus
        
        
        
    安装docker-compose:
        1.部署docker-compose
    yum -y install epel-release
    yum -y install docker-compose

        2.查看docker compose的版本 
    docker-compose version

        快速部署:
    wget http://192.168.11.253/Docker/day05-/softwares/oldboyedu-docker-compose.tar.gz
    tar xf oldboyedu-docker-compose.tar.gz && cd docker-compose && yum -y localinstall *.rpm

    使用docker-compose批量启动zabbix系统:
    cat > docker-compose.yaml < version: '3.3'

    # 指定网络配置
    networks:
        # 网络名称
        zabbix-net:
           # 配置和IP地址相关的信息
           ipam:
             # 指定驱动,若不指定,则默认值为default,以单点网络为例,默认的网络是bridge类型哟~
             # driver: default
             # 指定网络的配置信息
             config:
                 # 指定子网
               - subnet: 172.30.100.0/24
                 # 对于gateway参数目前仅有"version 2"才支持哟~
                 # gateway: 172.30.100.254  
           # 给网络打标签
           labels:
             school.oldboyedu.com: "老男孩IT教育"
             class.oldboyedu.com: "Linux80"
             auther.oldboyedu.com: "oldboyedu-linux"

    # 指定服务配置
    services:
       # 服务的名称
       mysql-server:
         # 指定服务的镜像名称
         image: mysql:8.0
         # 指定容器的重启策略
         restart: always
         # 向容器传递环境变量
         environment:
           MYSQL_ROOT_PASSWORD: root_pwd
           MYSQL_DATABASE: zabbix
           MYSQL_USER: zabbix
           MYSQL_PASSWORD: zabbix_pwd
         # 指定网络
         networks:
           - zabbix-net
         # 容器的启动命令,相当于Dockerfile的CMD指令
         command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
         
       zabbix-java-gateway:
         image: zabbix/zabbix-java-gateway:alpine-6.2-latest
         restart: always
         networks:
           - zabbix-net
         
       zabbix-server:
         # 指定服务依赖,表示当前依赖于"mysql-server"服务
         depends_on:
           - mysql-server
         image: zabbix/zabbix-server-mysql:alpine-6.2-latest
         restart: always
         environment:
           DB_SERVER_HOST: mysql-server
           MYSQL_DATABASE: zabbix
           MYSQL_USER: zabbix
           MYSQL_PASSWORD: zabbix_pwd
           MYSQL_ROOT_PASSWORD: root_pwd
           ZBX_JAVAGATEWAY: zabbix-java-gateway
         networks:
           - zabbix-net
         # 指定端口映射,左边的是宿主机的端口,右边是容器端口,类似于"-p"选项。
         ports:
           - "10051:10051"
           
       zabbix-web-nginx-mysql:
         depends_on:
           - zabbix-server
         image: zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
         ports:
           - "80:8080"
         restart: always
         environment:
           DB_SERVER_HOST: mysql-server
           MYSQL_DATABASE: zabbix
           MYSQL_USER: zabbix
           MYSQL_PASSWORD: zabbix_pwd
           MYSQL_ROOT_PASSWORD: root_pwd
         networks:
           - zabbix-net
    EOF


    创建:
    docker-compose -f 1111 -p oldboyedu-linux82 up -d    
        通用选项说明:
            -f:
                指定docker-compose的配置文件,若不指定,则默认值为"docker-compose.yaml"或者"docker-compose.yml"。
            -p:
                指定项目名称。
                
        up:
            启动服务,常用选项"-d",表示后台启动。

    docker-compose run zabbix-web-nginx-mysql nginx -t
        启动容器时指定命令。类似于docker run,他会创建新的容器哟。


    删除:
    docker-compose -f 1111 -p oldboyedu-linux82 down  # 删除容器和网络
    docker-compose -f 1111 -p oldboyedu-linux82 down -v  # 删除匿名存储卷
    docker-compose -f 1111 -p oldboyedu-linux82 down -v  --rmi  # 删除镜像和匿名存储卷


    查看:
    docker-compose ps
        查看各个服务的容器信息。
    docker-compose ps zabbix-web-nginx-mysql
        查看指定服务的容器信息。
        
    docker-compose logs -f zabbix-web-nginx-mysql
        查看"zabbix-web-nginx-mysql"服务的日志
        
    docker-compose top zabbix-web-nginx-mysql
        查看"zabbix-web-nginx-mysql"服务容器的进程信息
        
    docker-compose images 
        查看服务使用的镜像信息。
        
    docker-compose config 
        查看docker-compose的配置文件。


    其他:    
    docker-compose stop
        停止服务
        
    docker-compose start
        启动服务。
        
    docker-compose restart
        重启服务。
        
    docker-compose build
        编译或者重新编译服务镜像。
        如果你要执行该命令,请必须有build字段,该字段内得有Dockefile相关信息。若不指定该字段,则会跳过编译!
        
        

    docker-compose结合Dockerfile实战:
    cat > docker-compose.yaml < version: "3.3"

    services:
       oldboyedu-linux82-docker-compose:
          image: oldboyedu-linux82-docker-compose:v3.0
          # 指定镜像编译的相关参数
          build:
            # 指定上下文,表示当前所在的路径,便于找到dockerfile
            context: ./dockerfile
            # 指定dockerfile的名称
            dockerfile: Dockerfile

       oldboyedu-linux82-docker-compose-2022:
          image: oldboyedu-linux82-docker-compose:v4.0
          build:
            context: ./dockerfile
            dockerfile: Dockerfile
    EOF


     

    今日内容回顾:
        - 单机编排工具:docker-compose
        - 私有仓库: docker-registry
        - 企业级私有仓库: harbor 
            - http部署
            - https部署
            - docker registry ---> harbor
            - 主从复制
            - 高可用架构
        - 官方镜像仓库: docker hub 

  • 相关阅读:
    rust 逐行读取文本文件
    沪深300期权一个点多少钱?
    任务系统之Jenkins子任务
    drag 拖动元素让元素跟着鼠标移动,但是拖拽时的阴影咋隐藏不让他显示 ,
    MQ收到无序的消息时如何进行业务处理
    中信建投:商汤科技:大模型+大装置”逐浪AGI,四大板块持续升级
    什么是Tomcat?如何使用Tomcat?如何部署一个静态页面?
    9.4语言是一种实践2
    NLP机器翻译全景:从基本原理到技术实战全解析
    《剑指 Offer (第 2 版)》动态规划部分 JavaScript 题解
  • 原文地址:https://blog.csdn.net/lpx1249115962/article/details/132927624