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. windows下的端口转发命令netsh

    使用下面的命令查看语法 netsh interface portproxy add v4tov4 /? add v4tov4 [listenport=]<integer>|<serv ...

  2. win10 vs2015源码编译tesseract4.0

    1.安装软件 cmake  下载地址 cppan   下载地址 安装完毕后,需要将cmake.exe和cppan.exe加入环境变量PATH中 cmake简介 CMake全称为“cross platf ...

  3. react-redux笔记

    用vuex来对比来说明 分类 vuex redux react-redux 写state commit mutation (mutable state) dispatch reducer (immut ...

  4. CefSharp 与 js 相互调用

    https://blog.csdn.net/gong_hui2000/article/details/48155547

  5. 使用Linux的环境变量

    许多程序和脚本都使用环境变量来获取系统信息,并存储临时数据和配置信息: 1.什么是环境变量 用来存储关于shell会话和工作环境的信息,就叫做环境变量: bash shell下两种类型: 1.全局变量 ...

  6. 关于对CSS中超链接那部分的设置

    a:link{                                  //正常下的超链接 color:red;                          //超链接的颜色 text ...

  7. 《机器学习实战》之一:knn(python代码)

    数据 标称型和数值型 算法 归一化处理:防止数值较大的特征对距离产生较大影响 计算欧式距离:测试样本与训练集 排序:选取前k个距离,统计频数(出现次数)最多的类别 def classify0(inX, ...

  8. 2018-2019-2 20165205 《网络对抗技术》 Exp6 信息收集与漏洞扫描

    2018-2019-2 20165205 <网络对抗技术> Exp6 信息收集与漏洞扫描 实验目标 掌握信息收集的最基本技能与常用工具的方式 实验内容 各种搜索技巧的应用 DNS IP注册 ...

  9. LeetCode 101. Symmetric Tree 判断对称树 C++

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  10. vmvare使用桥接和NAT方式连接网络

    一.背景:本着学以致用的心态,试着最小化安装Centos7.4.安装centos主要目的有两个:共享文件(samba).安装postgresql数据库 本打算使用内网(不联网)的方式安装samba和p ...