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

最新文章

  1. WindowsForm公共控件--2016年12月5日
  2. C Primer Plus_第8章_字符输入输出和输入确认_编程练习
  3. VPN安装后报错:Reason442 & Error56
  4. UIResponder
  5. [ffmpeg 扩展第三方库编译系列] frei0r mingw32 下编译问题
  6. 【Android】数据存储-SharedPreferences存储
  7. iOS学习——JSON数据解析(十一)
  8. jsp,jquery,spring mvc 实现导出文件
  9. HDU 3518 Boring counting
  10. springboot 升级到2.0后 context-path 配置 不起作用,不生效 不管用 皆是因为版本改动导致的在这里记录一下
  11. adb查看安卓设备系统Android版本
  12. springmvc实现文件上传
  13. log4j的基本使用方法
  14. shell 多重条件判断
  15. Django的开始
  16. 微赞微擎V0.8以上版本:【数据库读写分离】实战教程 [复制链接]
  17. SSH远程连接Ubuntu Server
  18. HTML5 Canvas ( 径向渐变, 升级版的星空 ) fillStyle, createRadialGradient
  19. Netty 实现SSL安全连接(wss://)
  20. LeetCode——Delete Node in a Linked List

热门文章

  1. python基础知识7---补充
  2. 平安技术开放日质量保证技术专场第一期 [附部分 ppt]
  3. C# 6.0:Auto-Property initializer
  4. 【转】redis实现的分布式锁
  5. 使用腾讯地图和js,html实现地理位置的获取
  6. 微信小程序是怎么运行的?
  7. Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法
  8. 通过阿里云ECS服务器公网ip访问tomcat,nginx
  9. Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
  10. Winform 弹出窗体等待