是否可以重用多个容器之间共享的环境变量以避免重复,如下例所示:
version: '2'
services:
db:
image: example/db
ports:
- "8443:8443"
container_name: db
hostname: db
environment:
- USER_NAME = admin
- USER_PASSWORD = admin
svc:
image: example/svc
depends_on:
- db
ports:
- "9443:9443"
container_name: svc
hostname: svc
environment:
- DB_URL = https://db:8443
- DB_USER_NAME = admin
- DB_USER_PASSWORD = admin
Run Code Online (Sandbox Code Playgroud) 我在Docker容器中的tomcat上运行java web应用程序.
有没有办法监视java应用程序的内存使用情况?我尝试使用jconsoledocker的进程ID,但它告诉我Invalidate process id
我也在tomcat中启用JMX,但不知道如何绑定它.我可以使用visualvm我的本地绑定主机,但找不到绑定到主机内部的docker的方法.
有没有什么好办法实现这个目标?
谢谢
我有一个Java应用程序,我想使用Ubuntu 14.04 LTS作为VMware和VirtualBox分发为虚拟机设备映像(ovf或ova).该映像将包括操作系统本身,所需的操作系统软件包,我的Java应用程序,所有这些都是预配置的,并且在开机时可以立即运行.
创建OVF和OVA文件的最佳方法是什么?
我正在构建一个一次性的智能家居数据收集盒.它预计将运行在raspberry-pi级机器(~1G RAM)上,每天处理大约200K数据点(每个64位int).我们一直在使用vanilla MySQL,但性能开始崩溃,特别是对于给定时间间隔内的条目数量的查询.
据我了解,这基本上就是为时间序列数据库设计的.如果有的话,关于我的情况的不寻常的事情是音量相对较低,可用的RAM量也是如此.
快速浏览维基百科可以看出OpenTSDB,InfluxDB和BlueFlood.OpenTSDB建议使用4G的RAM,但这可能适用于高容量设置.InfluxDB实际上提到了传感器读数,但我找不到很多关于需要什么样的资源的信息.
好的,所以这是我的实际问题:是否有明显的红旗会使这些系统中的任何一个不适合我描述的项目?
我意识到这是一个火焰的邀请,所以我指望人们把它保持在明亮和乐于助人的一面.提前谢谢了!
Google Cloud BigTable不支持协处理器:
不支持协处理器.您无法创建实现org.apache.hadoop.hbase.coprocessor接口的类.
https://cloud.google.com/bigtable/docs/hbase-differences
我可以理解协处理器需要在每个Tablet(RS)节点上部署客户代码(jar).尽管如此,端点协处理器对HBase应用程序至关重要,可确保在某些情况下的数据位置.Apache Phoenix等HBase扩展依赖于Observer协处理器来维护二级索引,因此缺乏协处理器支持看起来像是一个与我不兼容的主要领域.
未来是否可以支持协处理器,以及在BigTable平板电脑上执行自定义Java"存储过程"有哪些变通方法?
更新1: Apache Phoenix coprosessors列表:
我在docker主机上启用了ipv6,但是有一个特定的容器,其中ipv6导致问题.有没有办法通过命令行参数或dockerfile指令启动没有ipv6支持的容器?
我使用mysql图像作为示例,但问题是通用的.
用于在docker中启动mysqld的密码在docker ps中不可见,但它在docker inspect中可见:
sudo docker run --name mysql-5.7.7 -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.7
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b98afde2fab7 mysql:5.7.7 "/entrypoint.sh mysq 6 seconds ago Up 5 seconds 3306/tcp mysql-5.7.7
sudo docker inspect b98afde2fab75ca433c46ba504759c4826fa7ffcbe09c44307c0538007499e2a
"Env": [
"MYSQL_ROOT_PASSWORD=12345",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"MYSQL_MAJOR=5.7",
"MYSQL_VERSION=5.7.7-rc"
]
Run Code Online (Sandbox Code Playgroud)
有没有办法隐藏/混淆启动容器时传递的环境参数.或者,是否可以通过引用文件传递敏感参数?
在Java中使用零拷贝将大文件从文件传输到套接字时,我发现了一些奇怪的行为.我的环境:
程序的作用:客户端将输入文件复制到套接字中,服务器使用零复制方法将套接字复制到输出文件:transferFrom和transferTo.如果文件大小相对较大,并非所有字节都到达服务器,在Windows情况下为100Mb +,在Centos情况下为2GB +.客户端和服务器驻留在同一台计算机上,localhost地址用于传输数据.
行为因操作系统而异.在Windows上,客户端成功完成transferTo方法.传输的字节数等于输入文件大小.
long bytesTransferred = fileChannel.transferTo(0, inputFile.length(), socketChannel);
另一方面,服务器报告较少的接收字节数.
long transferFromByteCount = fileChannel.transferFrom(socketChannel, 0, inputFile.length());
在Linux上,即使输入文件大小为4Gb,客户端上的传输也是2Gb.两种配置都有足够的空间.
在Windows上,我能够使用以下解决方法之一传输130Mb文件:1)增加服务器上的接收缓冲区大小和2)在客户端中添加线程睡眠方法.这使我认为当所有字节都发送到套接字发送缓冲区而不是服务器时,客户端上的transferTo方法完成.这些字节是否使它成为服务器是不能保证的,这会给我的用例带来问题.
在Linux上,我能够通过单个transferTo调用传输的最大文件大小是2Gb,但至少客户端报告发送到服务器的正确字节数.
我的问题:客户确保将文件保证交付到服务器,跨平台的最佳方式是什么?在Windows上使用什么机制来模拟sendfile()?
这是代码:
客户端 - ZeroCopyClient.java:
import org.apache.commons.io.FileUtils;
import java.io.*;
import java.net.*;
import java.nio.channels.*;
public class ZeroCopyClient {
public static void main(String[] args) throws IOException, InterruptedException {
final File inputFile = new File(args[0]);
FileInputStream fileInputStream = new FileInputStream(inputFile);
FileChannel fileChannel = fileInputStream.getChannel();
SocketAddress socketAddress = new InetSocketAddress("localhost", 8083);
SocketChannel socketChannel = SocketChannel.open(); …Run Code Online (Sandbox Code Playgroud) docker ×4
mysql ×2
cadvisor ×1
hbase ×1
influxdb ×1
ipv6 ×1
java ×1
jvm ×1
memory ×1
monitoring ×1
nio ×1
opentsdb ×1
ovf ×1
phoenix ×1
raspberry-pi ×1
sockets ×1
ubuntu-14.04 ×1
virtualbox ×1
vmware ×1
zero-copy ×1