1. 安装
1 | # 删除老版本 |
2. 镜像
通过修改镜像源地址, 加快镜像下载速度.
镜像源配置文件是: /etc/docker/daemon.json
- 使用daoCloud的镜像加速器
2.0.0.0.1. 修改方法
不同环境可查看 https://www.daocloud.io/mirror#accelerator-doc
在linux下使用如下命令配置:
1 | curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://85ad13ff.m.daocloud.io |
- 阿里云镜像加速器
注册 https://cr.console.aliyun.com/
之后访问 https://cr.console.aliyun.com/#/accelerator
获得专属加速器
/etc/docker/daemon.json
1 | { |
1 | sudo systemctl daemon-reload |
3. 网络
1 | docker run --net=bridge |
4. 修改Docker的默认镜像存储位置
可能会需要镜像太多, 或者磁盘分配太小, 之后导致无法再下载镜像,或者容器无法启动.
我们可能需要将镜像存储位置移动到其他文件目录下.
默认镜像存储位置是 /var/lib/docker
1 | # 通过该命令查看默认镜像存储位置 |
4.1. 方式 1: 修改Docker的默认镜像存储位置
1 | # 停止服务 |
4.2. 方式 2: 修改镜像和容器的默认存放路径
在 /etc/default/docker 中修改
DOCKER_OPTS="-g /home/raven/Package/docker"
之后重启服务
或者 修改 /etc/docker/daemon.json
{“registry-mirrors”: [“http://***.***.com”],“graph”:"/home/raven/Packages/docker"}
修改后立即生效
5. 容器管理工具
以下 3 个工具都能通过文件配置管理与发布 Docker 容器.
5.1. Docker Compose
Docker Compose 只能管理当前主机上的容器
5.2. Docker Swarm
Docker Swarm 能管理多主机上的容器, 是由 Docker 公司开发的
5.3. Kubernates
Kubernates 也能管理多主机上的容器, 是有谷歌开发的.
Kubernates 比 Docker Swarm 更主流有点, 目前很多大公司使用它作为默认容器管理工具.
6. Problem
6.1. 1. 动态设置 容器最大内存
在部署docker应用, 应用编排时都需要指定一个内存的最大使用上限.
如果应用使用的内存超过了配额, 镜像会被kill掉.
所以java微服务应用, 有必要设置应用自己的最大内存.
docker镜像服务的内存不能全部给 -Xmx , 因为JVM消耗的内存不仅仅是Heap.
JVM = Heap + Method Area +Constant Pool + Thread Stack * num of thread .
Xmx的值可设置为镜像上限减去150m或200m.
当然还需要考虑应用自身的特点, 比如class数目, 并发线程数等.
通过 cgroups 动态获取容器资源配置
1 | # git memory limit size |
7. 常见问题
7.1. docker 杀死容器
解决办法, 调整容器分配的内存到 1280m , 调整jvm分配的内存, 大致参数如下:
-Xms512m -Xmx512m -XX:ReservedCodeCacheSize=128m -XX:+UseCodeCacheFlushing -XX:MetaspaceSize=192m -XX:MaxMetaspaceSize=192m -XX:MaxDirectMemorySize=64m
明确已知内存 512m + 128m + 192m + 64m 共 896m,
另外线程预留 128m (预留 200线程, 每线程 512k)
剩余 256m 作为余量