Docker学习之搭建JavaWeb环境进阶篇

简介: 上一篇文章中,简单了学习了一下在Docker环境中搭建JavaWeb环境,其实这时候已经是一个全新的镜像了,就是我们的Ghost系统一样,装配了各式各样的软件一样,以后使用的时候直接安装镜像即可。这时候我们需要做的就是把配置完成JavaWeb环境Docker打包一下,封装成一个更新的镜像环境。

上一篇文章中,简单了学习了一下在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成功以后如下显示:
001

运行容器

查看镜像:

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://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

目录
相关文章
|
19天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
47 3
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
148 1
|
2月前
|
存储 Ubuntu Linux
学习docker
学习docker
39 1
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
330 3
|
2月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
58 2
|
2月前
|
运维 Kubernetes 开发者
Docker Swarm学习
【10月更文挑战第5天】
41 3
|
2月前
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
47 5
|
2月前
|
Kubernetes Linux 持续交付
docker容器学习
【10月更文挑战第1天】
42 1
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
205 0
Docker搭建jenkins环境
|
2月前
|
Linux 持续交付 iOS开发
docker的使用(环境特殊时可以考虑使用)
docker的使用(环境特殊时可以考虑使用)
16 0