上一篇文章中, 简单了学习了一下在 Docker 环境中搭建 Javaweb 环境, 其实这时候已经是一个全新的镜像了, 就是我们的 Ghost 系统一样, 装配了各式各样的软件一样, 以后使用的时候直接安装镜像即可这时候我们需要做的就是把配置完成 JavaWeb 环境 Docker 打包一下, 封装成一个更新的镜像环境
打包镜像
首先我们进入之前启动的容器:
- [root@iZ2ze74fkxrls31tr2ia2fZ ~]# docker attach centos
- [root@b5a21b26c111 ROOT]
b5a21b26c111 是产生的容器 ID, 然后我们执行以下命令:
docker commit b5a21b26c111 centos-java
配置完成以后执行命令 docker images, 就可以看到 REPOSITORY 名为 centos-java 的镜像了
上传镜像
阿里云官方网站链接 (进入后自行创建用户):https://dev.aliyun.com/search.html
然后依次创建命名空间 - 镜像仓库
登录阿里云 docker registry:
docker login --username=admin@52itstyle.com registry.cn-hangzhou.aliyuncs.com
将镜像推送到 registry:
- docker tag <IMAGE ID> registry.cn-hangzhou.aliyuncs.com/itstyle/images:centos-java
- docker push registry.cn-hangzhou.aliyuncs.com/itstyle/images:centos-java
Push 成功以后如下显示:
运行容器
查看镜像:
docker images
创建并启动容器:
docker run -i -t -v /root/software/:/mnt/software/ <IMAGE ID> /bin/bash
如果想启动的时候设置内存:
docker run -i -t -m 100m --memory-swap=100m -v /root/software/:/mnt/software/ <IMAGE ID> /bin/bash
创建时指定容器名字:
docker run -i -t --name test -m 100m --memory-swap=100m -v /root/software/:/mnt/software/ <IMAGE ID> /bin/bash
Docker 1.10 提供了对容器资源限制的动态修改能力例如, 我们可以通过下面命令把容器内存限制调整到 1GB
- docker update -m 1024m test
- docker restart test
查看运行容器:
docker ps
重命名容器:
docker rename < 原容器 NAMES> < 新容器 NAMES>
配置完成以后, 我们启动容器中的 Tomcat
负载均衡
openresty 配置:
- server {
- listen 80;
- server_name docker.52itstyle.com;
- charset utf-8;
- location / {
- default_type text/html;
- proxy_pass http://docker;
- }
- }
- upstream docker {
- server 172.18.0.2:8080 weight=1 max_fails=2 fail_timeout=30s;
- server 172.18.0.3:8080 weight=1 max_fails=2 fail_timeout=30s;
- }
最终访问地址 (见标题变化):http://docker.52itstyle.com/
资源配置小知识
内存限制
Docker 提供的内存限制功能有以下几点:
容器能使用的内存和交换分区大小
容器的核心内存大小
容器虚拟内存的交换行为
容器内存的软性限制
是否杀死占用过多内存的容器
容器被杀死的优先级
内存限制相关的参数:
执行 docker run 命令时能使用的和内存限制相关的所有选项如下
-m,--memory 内存限制, 格式是数字加单位, 单位可以为 b,k,m,g 最小为 4M
--memory-swap 内存 + 交换分区大小总限制格式同上必须必 - m 设置的大
--memory-reservation 内存的软性限制格式同上
--oom-kill-disable 是否阻止 OOM killer 杀死容器, 默认没设置
--oom-score-adj 容器被 OOM killer 杀死的优先级, 范围是 [-1000, 1000], 默认为 0
--memory-swappiness 用于设置容器的虚拟内存控制行为值为 0~100 之间的整数
--kernel-memory 核心内存限制格式同上, 最小为 4M
作者: 小柒
来源: https://yq.aliyun.com/articles/544417