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左右

docker for mac的更多相关文章

  1. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  2. Install Docker on Mac OS X(转)

    Install Docker on Mac OS X You can install Docker using Boot2Docker to run docker commands at your c ...

  3. docker on Mac

    贡献一篇: 云主机可以选择操作系统镜像快速创建主机,这比虚拟机更便捷了,我们本地也可以这么做了,因为有了 Docker 这个东西.它依赖于 LXC(Linux Container),能从网络上获得配置 ...

  4. Docker for Mac与IntelliJ Docker Integration插件的兼容性问题

    笔者在自己的Mac上安装的是Docker for Mac,而不是Docker Toolbox. 这两者最主要的区别在于Docker for Mac用HyperKit作为虚拟化解决方案而不是Virtua ...

  5. Docker For Mac没有docker0网桥

    在使用Docker时,要注意平台之间实现的差异性,如Docker For Mac的实现和标准Docker规范有区别,Docker For Mac的Docker Daemon是运行于虚拟机(xhyve) ...

  6. Docker for mac安装

    Mac安装Docker docker下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-mac docker for m ...

  7. docker for mac的JSON配置文件中的hosts项修改后无法生效

    docker for mac的JSON配置文件中的hosts项修改后无法生效 docker 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地 增 ...

  8. Docker for mac开启docker api调用

    docker-java 支持unix socket调用的 DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefa ...

  9. Docker For Mac 下安装 Rancher

    https://www.jianshu.com/p/5fb3e1a998d6 Docker For Mac 下安装 Rancher 原文:如何在 OS X 上安装 Rancher Rancher 是 ...

随机推荐

  1. SQL触发器批量删除数据库中的表

    以下通过触发器批量删除数据库中的表,SQL2008已验证 DECLARE @Table NVARCHAR() DECLARE @Count Int = DECLARE tmpCur CURSOR FO ...

  2. bzoj5107: [CodePlus2017]找爸爸

    Description 小A最近一直在找自己的爸爸,用什么办法呢,就是DNA比对.小A有一套自己的DNA序列比较方法,其最终目标是最 大化两个DNA序列的相似程度,具体步骤如下:1.给出两个DNA序列 ...

  3. kafka性能调优(转)

    原文  https://blog.csdn.net/weixin_39478115/article/details/79155287 Broker参数配置 1.网络和io操作线程配置优化 # brok ...

  4. Win8 & WP8.1 轻型数据库

    自Win8 和 WP8.1 以来,MS把SQL CE去掉了.为了方便自己的APP升级,减少代码改动量,所以写了个小型的数据库管理,参考WP8.1之前的DataContext. 用时较短,花了几天的时间 ...

  5. Ajax2简单的使用方式

    http://www.cnblogs.com/Ming8006/p/6142191.html

  6. Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法

    Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: 注释掉此段代码,即可. 缺点:导致Django项目完全无法防 ...

  7. PLSQL安装教程,无需oracle客户端(解决本地需要安装oracle客户端的烦恼)

    最近用笔记本开发,项目用的是Oracle数据库,不想本地安装Oracle客户端. 就只装了一个PLSQL 连接数据库的时候各种错误,现在解决了记录一下. 详细内容见  附件

  8. Angular 引入第三方框架方法(如Jquery,Bootstrap)

    1.npm i jquery --save    /    npm i bootstrap --save 2.angular.json 引入路径 3.引入Jquery和Bootstrap的类型描述文件 ...

  9. CUDA编程模型——组织并行线程3 (2D grid 1D block)

    当使用一个包含一维块的二维网格时,每个线程都只关注一个数据元素并且网格的第二个维数等于ny,如下图所示: 这可以看作是含有二维块的二维网格的特殊情况,其中块儿的第二个维数是1.因此,从块儿和线程索引到 ...

  10. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...