如何设置docker 容器共享内存容器中Java应用的内存限制

为 Java EE 应用提供的 9 种 Docker 方法 - 技术翻译 - 开源中国社区
为 Java EE 应用提供的 9 种 Docker 方法
【已翻译100%】
英文原文:
推荐于 2年前 (共 10 段, 翻译完成于 03-25)
参与翻译&(4人)&: ,
你想在 Java EE 应用中使用
一个典型的Java EE应用程序由应用服务器(例如:)和数据库(例如:Mysql)组成的。除此以外,你也许还需要一个前端负载:例如Apache,用于多台应用服务器的负载均衡,缓存:例如Infinispan,可以用于提高应用的整体性能。消息中间件:例如,可以用于处理队列。缓存和消息组件可以用于集群的进一步扩展。
本文将先讲解一个简单 Docker 容器配置方法:包括应用服务器和数据库。接下来将讲解几个高级应用方法:包括前端负载、缓存、消息中间件和集群。
让我们开始吧!
&翻译得不错哦!
如果你的机器之前没有安装过Docker,那么首先你需要安装Docker。你可以使用是最新版本的linux,它已经集成了Docker,或者使用安装命令:
sudo&apt-get&install&docker-io
在Mac和windows系统上,则需安装&&,它是一个微内核的linux虚拟机包含Docker主机。同时你需要配置ssh秘钥和证书。
幸运的是,. 使用非常简单。你从头开始到创建完成一个Docker主机只需要一条指令。这个主机可以创建在你的便携设备上、云端或数据中心。在多个服务器上安装Docker,Docker客户端可以传输配置。
关于这方面的详细讲解请关注:.
&翻译得不错哦!
第 2 种 Docker 方法:应用服务器+内存数据库
Java EE 7 的一个很酷的功能是带默认的数据库资源。这可以让你不用担心在你的应用程序可以访问之前为应用服务器创建特定的JDBC资源。任何Java EE 7兼容的应用服务器将默认的JDBC资源名称(java:comp/defaultdatasource)映射到自带的数据库服务器内的应用服务器专用的资源上。
例如, 捆绑了 H2 内存数据库。一旦 Wildfly 准备接受请求的时候该数据库就可用了。这简化了开发工作,让你做一个快速原型。默认的 JDBC 资源映射到 java:jboss/datasources/ExampleDS,然后又会被映射到 JDBC URL ofjdbc:h2:mem:DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE.
这这种情况下,数据库服务器是运行在应用服务器内的另一个应用。
下面是在WildFly上运行Jave EE7应用
docker&run&-it&-p&&arungupta/javaee7-hol
如果你想运行一个典型的WildFly加H2内存数据库的Java EE 7应用,那么这种Docker方法的详细解释见。
&翻译得不错哦!
第3种 Docker方法 : 两个容器在相同的主机使用链接
前一种方法能够让你快速上手,但是很快出现了瓶颈-数据库只能在内存中。这就意味着你更改任何数据和 schema 在应用服务关闭后都将要失效。在这种情况下,你需要使用应用服务器以外的数据库服务器。例如,MySQL 数据库服务器和 WildFly 应用服务器。
简单起见,数据库服务器和应用程序服务器可以在同一个主机上运行。
&被用来链接两个容器。在资源容器和目标容器间创建管道链接并且能够保证数据在两个容器间安全传输。 在我们的案例中,目标容器(WildFly)可以看到资源信息(MySQL)。重点需要理解是在资源容器中不需要公开任何信息,仅仅是在目标容器中可见。
启动 MySQL 和 WildFly 容器并且添加链接:
docker&run&--name&mysqldb&-e&MYSQL_USER=mysql&-e&MYSQL_PASSWORD=mysql&-e&MYSQL_DATABASE=sample&-e&
MYSQL_ROOT_PASSWORD=supersecret&-d&mysql
docker&run&--name&mywildfly&--link&mysqldb:db&-p&&-d&arungupta/wildfly-mysql-javaee7
&翻译得不错哦!
第 4 种 Docker 方法:在同一宿主上的两个容器使用 Fig 进行通信
上一种方法要求你以特定的次序运行容器。如果应用程序的每一层都位于一个容器里,那么运行多容器应用程序就很快变得富有挑战性。(已被
取代)是一款具有以下特征的 Docker 编排工具:
只用一个配置文件就能定义多个容器
通过在两个容器间创建 link 来建立它们之间的依赖关系
以合理的顺序启动各个容器
下面的配置文件就是 Fig 的入口:
&&image:&mysql:latest
&&environment:
&&&&MYSQL_DATABASE:&sample
&&&&MYSQL_USER:&mysql
&&&&MYSQL_PASSWORD:&mysql
&&&&MYSQL_ROOT_PASSWORD:&supersecret
mywildfly:
&&image:&arungupta/wildfly-mysql-javaee7
&&&&-&mysqldb:db
所有的容器可以这样来启动:
详细阐述了这种方法。
现在 Fig 只接受更新,它的代码是
的基础。相关讲解参见下一种方法。
&翻译得不错哦!
第5种Docker方法:在同一宿主上的两个容器使用Compose进行通信
是一种在Docker上定义和运行复杂应用程序的工具。通过Compose,你在单独的文件中定义一个多容器应用程序,只需执行一个命令就能让你的应用程序运行起来。
应用程序的配置文件格式和Fig所用的一致。这些容器可以这样启动:
docker-compose up -d
对这个方法的详细讲解参见。
&翻译得不错哦!
第6种Docker方法:在不同宿主上的两个容器使用IP地址进行通信
在前一个方法中,两个容器运行在同一个宿主上。它们俩可以使用Docker linking方便地互相通信。但是简单的容器级linking不允许跨宿主通信。
在同一个宿主上运行容器意味着你无法扩展每一层,数据库属于独立的一层,应用服务器也属于独立的一层。在这种情况下,你需要在不同的宿主上运行每个容器。
MySQL容器可以这样启动:
docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p
JDBC资源可以这样创建:
data-source add --name=mysqlDS --driver-name=mysql --jndi-name=java:jboss/datasources/ExampleMySQLDS --connection-url=jdbc:mysql://$MYSQL_HOST:$MYSQL_PORT/sample?useUnicode=true&characterEncoding=UTF-8 --user-name=mysql --password=mysql --use-ccm=false --max-pool-size=25 --blocking-timeout-wait-millis=5000 --enabled=true
WildFly容器可以这样启动:
docker run --name mywildfly -e MYSQL_HOST=&IP_ADDRESS& -e MYSQL_PORT=5306 -p
-d arungupta/wildfly-mysql-javaee7
对这个方法的完整阐述参见。
&翻译得不错哦!
第7种Docker方法:使用Docker Swarm管理不同宿主上的两个容器
是Docker的原生集群管理工具。它将一群Docker宿主变为单一的虚拟宿主。通过优化宿主资源利用率,提供故障转移服务,它弥补了Docker Machine的不足。具体地说,Docker Swarm允许用户将运行着Docker守护进程的宿主组建为资源池,并在此之上调度Docker容器的运转,自动管理工作负载的分配,维护集群的状态。
关于这个方法的更多详情将在后续博客中介绍。
&翻译得不错哦!
第8种Docker方法:从Eclipse部署Java EE应用程序
这个压轴方法将教你如何把已有的应用程序部署到一个Docker镜像中。
假定你将作为你的开发环境,用作你的应用服务器。
&&&&&&&&&&&&
这里提供两条途径来部署这些应用程序:
1)&基于&Docker volumes + 本地&的部署方式:在你本地计算机上有一个目录,正以的形式挂载着。通过将这个目录映射到用于部署的目录,WildFly Docker容器被这样启动起来:
docker run -it -p
-v /Users/arungupta/tmp/deployments:/opt/jboss/wildfly/standalone/deployments/:rw jboss/wildfly
通过设置JBoss Tools将WAR文件部署到这个目录中。
2)&基于&WildFly管理API + 远程&的部署方式:启动WildFly Docker容器,此外还要开放管理端口9990:
docker run -it -p
arungupta/wildfly-management
通过设置JBoss Tools来使用远程的WildFly服务器,并利用管理API来进行部署。
对这个方法的详细讲解在中可以找到。
&翻译得不错哦!
第9种Docker方法:使用Arquillian Cube测试Java EE应用程序
允许你以手动或自动的方式,在测试的生命周期中,控制Docker镜像的生命周期。Cube利用Docker REST API与容器通信。它使用远程适配器API同应用服务器通信,比如这里用到的WildFly。Docker参数是作为maven-surefire-plugin的一部分来配置的:
&configuration&
&&&&&systemPropertyVariables&
&&&&&arquillian.launch&wildfly-docker&/arquillian.launch&
&&&&&arq.container.wildfly-docker.configuration.username&admin&/arq.container.wildfly-docker.configuration.username&
&&&&&arq.container.wildfly-docker.configuration.password&Admin#70365&/arq.container.wildfly-docker.configuration.password&
&&&&&arq.extension.docker.serverVersion&1.15&/arq.extension.docker.serverVersion&
&&&&&arq.extension.docker.serverUri&http://127.0.0.1:2375&/arq.extension.docker.serverUri&
&&&&&arq.extension.docker.dockerContainers&
&&&&&&&&wildfly-docker:
&&&&&&&&&&&&image:&arungupta/javaee7-samples-wildfly
&&&&&&&&&&&&exposedPorts:&[8080/tcp,&9990/tcp]
&&&&&&&&&&&&await:
&&&&&&&&&&&&&&&&strategy:&polling
&&&&&&&&&&&&&&&&sleepPollingTime:&50000
&&&&&&&&&&&&&&&&iterations:&5
&&&&&&&&&&&&portBindings:&[8080/tcp,&9990/tcp]
&&&&&/arq.extension.docker.dockerContainers&
&&&&&/systemPropertyVariables&
&/configuration&
关于这个方法的完整详情可以在中找到。
在Docker上部署你的Java EE应用程序时,你还用了什么其他方法吗?
欢迎尝试这些方法!
&翻译得不错哦!
我们的翻译工作遵照 ,如果我们的工作有侵犯到您的权益,请及时联系我们
看了下原文,第1种是第2段,估计是译者把标题漏了
软件集装箱Docker 容器内存监控原理及应用
作者:XuXinkun
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Docker 容器内存监控原理及应用的相关资料,需要的朋友可以参考下
Docker 容器内存监控
linux内存监控
要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念。
使用free命令可以查看当前内存使用情况。
[root@localhost ~]$ free
-/+ buffers/cache:
这里有几个概念:
mem: 物理内存
swap: 虚拟内存。即可以把数据存放在硬盘上的数据
shared: 共享内存。存在在物理内存中。
buffers: 用于存放要输出到disk(块设备)的数据的
cached: 存放从disk上读出的数据
可以参考这里。
为方便说明,我对free的结果做了一个对应。
[root@localhost ~]$ free
shared_mem
-/+ buffers/cache: real_used
total_swap used_swap
物理内存总量
已使用的物理内存量
空闲的物理内存量
shared_mem
共享内存量
buffer所占内存量
cache所占内存量
实际使用的内存量
实际空闲的内存量
total_swap
已使用的swap
空闲的swap
一般认为,buffer和cache是还可以再进行利用的内存,所以在计算空闲内存时,会将其剔除。
因此这里有几个等式:
real_used = used_mem - buffer - cache
real_free = free_mem + buffer + cache
total_mem = used_mem + free_mem
了解了这些,我们再来看free的数据源。其实其数据源是来自于/proc/memeinfo文件。
[root@localhost ~]$ cat /proc/meminfo
2095356 kB
SwapCached:
Active(anon):
Inactive(anon): 4455076 kB
Active(file):
Inactive(file):
Unevictable:
SwapTotal:
Writeback:
AnonPages:
8374496 kB
SReclaimable:
8163096 kB
SUnreclaim:
KernelStack:
PageTables:
NFS_Unstable:
WritebackTmp:
CommitLimit:
Committed_AS:
VmallocTotal:
VmallocUsed:
VmallocChunk:
HardwareCorrupted:
AnonHugePages:
HugePages_Total:
HugePages_Free:
HugePages_Rsvd:
HugePages_Surp:
Hugepagesize:
DirectMap4k:
DirectMap2M:
2015232 kB
DirectMap1G:
说完linux的内存,我们再来看下docker的内存监控。docker自身提供了一种内存监控的方式,即可以通过docker stats对容器内存进行监控。
该方式实际是通过对cgroup中相关数据进行取值从而计算得到。
cgroup中的memory子系统为hierarchy提供了如下文件。
[root@localhost ~]$ ll /cgroup/memory/docker/53a11f13c030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f/
--w--w--w- 1 root root 0 2月 22 12:51 cgroup.event_control
-rw-r--r-- 1 root root 0 5月 25 17:07 cgroup.procs
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.failcnt
--w------- 1 root root 0 2月 22 12:51 memory.force_empty
-rw-r--r-- 1 root root 0 3月 30 17:06 memory.limit_in_bytes
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.max_usage_in_bytes
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.memsw.failcnt
-rw-r--r-- 1 root root 0 3月 30 17:06 memory.memsw.limit_in_bytes
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.memsw.max_usage_in_bytes
-r--r--r-- 1 root root 0 2月 22 12:51 memory.memsw.usage_in_bytes
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.move_charge_at_immigrate
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.oom_control
-rw-r--r-- 1 root root 0 3月 30 17:06 memory.soft_limit_in_bytes
-r--r--r-- 1 root root 0 2月 22 12:51 memory.stat
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.swappiness
-r--r--r-- 1 root root 0 2月 22 12:51 memory.usage_in_bytes
-rw-r--r-- 1 root root 0 2月 22 12:51 memory.use_hierarchy
-rw-r--r-- 1 root root 0 2月 22 12:51 notify_on_release
-rw-r--r-- 1 root root 0 2月 22 12:51 tasks
这些文件的具体含义可以查看相关资料cgroup memory。
这里主要介绍几个与docker监控相关的。
memory.usage_in_bytes
已使用的内存量(包含cache和buffer)(字节),相当于linux的used_meme
memory.limit_in_bytes
限制的内存总量(字节),相当于linux的total_mem
memory.failcnt
申请内存失败次数计数
memory.memsw.usage_in_bytes
已使用的内存和swap(字节)
memory.memsw.limit_in_bytes
限制的内存和swap容量(字节)
memory.memsw.failcnt
申请内存和swap失败次数计数
memory.stat
内存相关状态
以下为一个容器的样例。
[root@localhost 53a11f13c030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.usage_in_bytes
[root@localhost 53a11f13c030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.memsw.usage_in_bytes
[root@localhost 53a11f13c030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.stat
mapped_file
inactive_anon 4218880
active_anon
inactive_file
active_file
unevictable 0
hierarchical_memory_limit
hierarchical_memsw_limit
total_cache
total_mapped_file
total_pgpgin
total_pgpgout
total_swap
total_inactive_anon 4218880
total_active_anon
total_inactive_file
total_active_file
total_unevictable 0
memory.stat
memory.stat包含有最丰富的
页缓存,包括 tmpfs(shmem),单位为字节
匿名和 swap 缓存,不包括 tmpfs(shmem),单位为字节
mapped_file
memory-mapped 映射的文件大小,包括 tmpfs(shmem),单位为字节
存入内存中的页数
从内存中读出的页数
swap 用量,单位为字节
active_anon
在活跃的最近最少使用(least-recently-used,LRU)列表中的匿名和 swap 缓存,包括 tmpfs(shmem),单位为字节
inactive_anon
不活跃的 LRU 列表中的匿名和 swap 缓存,包括 tmpfs(shmem),单位为字节
active_file
活跃 LRU 列表中的 file-backed 内存,以字节为单位
inactive_file
不活跃 LRU 列表中的 file-backed 内存,以字节为单位
unevictable
无法再生的内存,以字节为单位
hierarchical_memory_limit
包含 memory cgroup 的层级的内存限制,单位为字节
hierarchical_memsw_limit
包含 memory cgroup 的层级的内存加 swap 限制,单位为字节
active_anon + inactive_anon = anonymous memory + file cache for tmpfs + swap cache
active_file + inactive_file = cache - size of tmpfs
docker原生内存监控
再来说到docker原生的docker stats。其具体实现在libcontainer中可以看到。其将容器的内存监控分为cache,usage,swap usage,kernel usage,kernel tcp usage。
其中cache是从memory.stat中的cache中获取。
usage是使用memory.usage_in_bytes和memory.limit_in_bytes进行相除来计算使用率。这一方式有一个弊端,就是不够细化,没有区分出cache部分,不能真正反映内存使用率。因为一般来说cache是可以复用的内存部分,因此一般将其计入到可使用的部分。
可以考虑的改进计算方式
改进方式在统计内存使用量时将cache计算排除出去。类似于linux中计算real_used时将buffer和cache排除一样。
cache并不能直接应用memory.stat中的cache,因为其中包括了tmpfs,而tmpfs算是实际使用的内存部分。
tmpfs即share memory,共享内存
因为在memory.stat中存在有
active_file + inactive_file = cache - size of tmpfs
因此可以计算实际使用的内存量为
real_used = memory.usage_in_bytes - (rss + active_file + inactive_file)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具docker(38)
http://blog.csdn.net/s1070/article/details/
1.0 测试工具
1.1 内存限制选项
-m,&--memory=&&
Memory limit (format:&&number&[&unit&]). Number is a positive integer. Unit can be one of&b,&k,&m,
or&g. Minimum is 4M.
--memory-swap=&&
Total memory limit (memory + swap, format:&&number&[&unit&]). Number is a positive integer. Unit can be one of&b,&k,&m,
docker run -it --rm -m 100M --memory-swap -1 ubuntu-stress:latest /bin/bash
& & 指定限制内存大小并且设置 memory-swap 值为 -1,表示容器程序使用内存受限,而 swap 空间使用不受限制(宿主 swap 支持使用多少则容器即可使用多少。如果&--memory-swap&设置小于&--memory则设置不生效,使用默认设置)。
docker run -it --rm -m 100M ubuntu-stress:latest /bin/bash
& & 如果不添加--memory-swap选项,则表示容器中程序可以使用100M内存和100Mswap内存,默认情况下,--memory-swap&会被设置成 memory 的 2倍。-m 为物理内存上限,而 --memory-swap 则是 memory + swap 之和,当压测值是 --memory-swap 上限时,则容器中的进程会被直接 OOM kill。
例如运行容器&
&run -it -m 100M --memory-swap 400M
ubuntu-stress:latest /bin/bash &压测几秒钟后超出内存限制kill掉进程
root@5ed1fd88a1aa:/# stress --vm&1&--vm-bytes&400M
# 压测到&400M 程序会被 kill&
stress: info: [24] dispatching hogs:&0&cpu,&0&io,&1&vm,&0&hdd&
stress: FAIL: [24] (416)
&-- worker&25&got signal&9&
stress: WARN: [24] (418)
now reaping child worker processes
&stress: FAIL: [24] (452)
failed run completed in&3s
& 如果在k8s中对容器限制内存,那么在运行时,pod内的容器超出限制后会自动重启。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:289477次
积分:3721
积分:3721
排名:第8820名
原创:65篇
转载:213篇
评论:11条
(1)(2)(3)(4)(10)(15)(10)(8)(6)(25)(25)(11)(7)(4)(4)(3)(6)(8)(3)(3)(7)(18)(13)(22)(12)(9)(31)(6)(2)问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我分别用两种linux系统部署Docker0.8,都没法限制容器的内存大小。具体情况如下:
用CentOS6.5【内核为3.10.5-3.el6.x86_64】做主机,新建容器,得到结果如下:
# docker run -i -t -d -m 512m centos /bin/bash
WARNING: WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
9229fe1baccbc5a11f3e0fa8bec95afd
该容器新建成功,但不能限制内存大小。
Ubuntu 12.04【内核为3.8.0-38-generic】做主机,并且修正/etc/default/grub,更改$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"之后,新建容器,得到结果如下:
# sudo docker run -i -t -m 512m -d ubuntu /bin/bash
89d629ed37d63b67b49ed8c4c11cab653d61d5b85227bdd10c8a9a0a718c686e
看似未报错,登陆该新建的容器里面查看内存【free命令】,发现并未限制。
大家手头的主机都是什么系统,有没有这种情况?如何解决?盼回复,谢谢!
来源: Docker 技术问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
container中的free命令,看的是Host上的内存。
要查看container的内存限制用这个:
cat /cgroup/memory/lxc/{full_container_id}/memory.limit_in_bytes
/cgroup/下还可以查看其它资源的限制:
ll /cgroup/
drwxr-xr-x 3 root root 0 3月
17 13:33 blkio
drwxr-xr-x 3 root root 0 3月
17 13:33 cpu
drwxr-xr-x 3 root root 0 3月
17 13:33 cpuacct
drwxr-xr-x 3 root root 0 3月
17 13:33 cpuset
drwxr-xr-x 3 root root 0 3月
17 13:33 devices
drwxr-xr-x 3 root root 0 3月
17 13:33 freezer
drwxr-xr-x 3 root root 0 3月
17 13:33 memory
drwxr-xr-x 3 root root 0 3月
17 13:33 net_cls
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼主,我用ubuntu虚拟机做实验的时候也遇到这个问题,请参照这里解决
以下是重点摘录
If you want to enable memory and swap accounting, you must add the following command-line parameters to your kernel:
$ cgroup_enable=memory swapaccount=1
On systems using GRUB (which is the default for Ubuntu), you can add those parameters by editing /etc/default/grub and extending GRUB_CMDLINE_LINUX. Look for the following line:
$ GRUB_CMDLINE_LINUX=""
And replace it by the following one:
$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
Then run sudo update-grub, and reboot.
These parameters will help you get rid of the following warnings:
WARNING: Your kernel does not support cgroup swap limit.
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
有人知道Centos6下面这个问题怎么解决?
我的docker是1.6.2的, Centos是6.6,内核版本是3.10.81
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我是CentOS6.7 应该差不多
我是修改的/etc/grub.conf 在当前使用的内核的kernel项的最后加上cgroup_enable=memory swapaccount=1
然后 cat /proc/cmdline 就会发现,配置生效了
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:}

我要回帖

更多关于 docker 容器内存大小 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信