• docker for mac


    MacOS上通过docker部署
    docker环境准备
    1.访问这里安装好docker,需要注册账号才能下载dmg安装包:https://hub.docker.com/editions/community/docker-ce-desktop-mac

    2.设置docker desktop for mac

    2.1 设置docker占用资源

    点击mac顶部的docker图标,在下拉菜单中选择preference项,打开docker配置页面,选中Advanced标签如下:

    如上,整个dxxx除了数据部分跑起来,需要5G资源,sonar和nexus用公司公共的情况下。所以设置10G比较保险。实际起来用不了这么多。而且后面dxxx会针对单机版做精简,尽量减少不必要内存占用。cpu同样设置4核,会比较流畅。

    2.2 设置文件共享,方便宿主机和容器间的目录挂载与共享:

    2.3 设置docker daemon参数

    如上在Daemon配置中,选Advanced标签,显示json配置,贴入如下配置:

    {
      "debug" : true,
      "insecure-registries" : [
        "reg.docker.alibaba-inc.com",
        "registry.cn-hangzhou.aliyuncs.com",
        "registry.aliyuncs.com",
        "host.docker.internal:5000"
      ],
      "experimental" : true,
      "log-driver":"json-file",
      "log-opts": {"max-size":"50m", "max-file":"2"}
    }
    

    点击"Apply & Restart"按钮应用并重启整个docker daemon;

    不像linux,Mac上因为中间隔了一层vm的缘故,重启mac docker后之前的所有容器都会退出到stop状态

    参数解释:

    1.host.docker.internal:5000
    
    其中的host.docker.internal是docker for mac特有的一个域名,在容器内部会被解析为容器所在的host的ip,就是docker for mac自动为docker环境启动的一个轻量级vm的ip地址,在mac上是访问不到的。我们会用这个域名在vm内部不同的容器间做通信。5000端口是为dxxx依赖的registry组件准备的,一键安装dxxx时内部registry容器会暴露这个端口
    
    
    2."experimental" : true
    
    这个参数是为了解决一个报错的问题,具体忘记了。。。
    
    
    
    3.log-driver和log-opts
    
    设置docker的日志引擎为json-file,每个容器的日志文件大小为50m,超过大小时2个文件循环滚动
    

    3.检查docker环境是否正常

    ➜  docker git:(master) ✗ docker version
    Client: Docker Engine - Community
     Version:           18.09.1
     API version:       1.39
     Go version:        go1.10.6
     Git commit:        4c52b90
     Built:             Wed Jan  9 19:33:12 2019
     OS/Arch:           darwin/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          18.09.1
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.6
      Git commit:       4c52b90
      Built:            Wed Jan  9 19:41:49 2019
      OS/Arch:          linux/amd64
      Experimental:     true
    
    ➜  docker git:(master) ✗ docker-compose version
    docker-compose version 1.23.2, build 1110ad01
    docker-py version: 3.6.0
    CPython version: 3.6.6
    OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018
    
    ➜ docker run --rm -it registry.aliyuncs.com/tmns/tmns-centos:base bash
    [root@4465f103a4bb /]# uname -r
    4.9.125-linuxkit
    [root@4465f103a4bb /]# exit
    exit
    

    如上说明docker for mac环境正常。docker desktop for mac版本自带docker-compose工具

    1.清理docker容器和镜像

    删除所有已经停止的容器:docker rm $(docker ps -a -q)
    删除所有未打 dangling 标签的镜像(即未被任何镜像引用的空悬镜像):
    删除已经停止的容器,和未被任何镜像引用的空悬(dangling)镜像:docker system prune
    删除所有已停止容器,和未被任何容器引用的镜像:docker system prune -a -f

    ➜ docker system prune
    WARNING! This will remove:
            - all stopped containers
            - all networks not used by at least one container
            - all dangling images
            - all dangling build cache
    Are you sure you want to continue? [y/N] y
    Total reclaimed space: 0B
    
    
    ➜ docker system prune -a -f
    ...
    untagged: registry.aliyuncs.com/dxxx/dxxxhub-action@sha256:09f9a0df826d7974ed3a8194aa180d6308b7396dfa31c0b4539f642c3a68233e
    deleted: sha256:1a60b505dca2281c3c1a75b2442cd9d7d7842152988c8856b9f314669a0e99c0
    ...
    Total reclaimed space: 6.322GB
    

    2.收缩docker for mac占用磁盘

    ➜  docker git:(master) ✗ ls -lh ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
    -rw-r--r--  1 xlxk  staff    11G  2 23 19:36 /Users/xlxk/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
    

    在mac下 docker system prune -a -f 之后,上面这个qcow2文件会显著变小。看来mac下qcow2已经优化得很好,不需要再做额外彻底的清理了。否则的话可以停止docker,删除这个qcow2文件,再启动docker; 所有的容器、镜像和volumes会彻底消失

    3.查看容器日志

    查看一个容器的全部日志:➜ docker logs dxxx-orchestrator
    跟踪一个容器的全部日志: ➜ docker logs -f dxxx-orchestrator
    将容器日志导出到文件中:➜ docker logs dxxx-orchestrator &> dxxx-orchestrator.log

    4.查看容器配置

    ➜  docker git:(master) ✗ docker inspect xxx
    [
    xxx
    ]
    

    注意:以上输出删除了不常关注的部分,留下了常用的部分

    5.查看容器资源使用情况

    ➜  docker git:(master) ✗ docker stats
    CONTAINER ID        NAME                  CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
    8f60c461fbdd        dxxx-ui               0.00%               37.24MiB / 9.744GiB   0.37%               830kB / 721kB       0B / 16.4kB         4
    b36b4d88b7bf        dxxx-pipeline         0.00%               16.52MiB / 9.744GiB   0.17%               34.2MB / 11.5MB     0B / 0B             15
    8f54559ad0f9        dxxx-dxxxhub          0.43%               4.484MiB / 9.744GiB   0.04%               667kB / 378kB       0B / 0B             15
    

    可以看到,只要java写的组件,内存占用轻松上1G,没1G也有大几百兆; golang写的组件只有10M左右

  • 相关阅读:
    mobile safari 下overflow:auto的解决方法
    AT指令控制GPRS模块实现TCP连接的步骤
    在一个activity中添加多个listview
    Android中Bitmap、Drawable、byte[]互换
    AT指令(中文详解版)(二)
    android Splash闪屏的实现
    Android应用自动更新功能的代码实现
    Android自定义控件
    Android中动态更新ListView
    Android软件开发之常用系统控件界面大合集
  • 原文地址:https://www.cnblogs.com/blogabc/p/10449868.html
Copyright © 2020-2023  润新知