我试图部署3个Docker容器,它们之间有一个依赖关系(A – > B – > C)。 现在,每个容器都应该在JVM实例之上运行一个Akka-Spray实例。 问题是:按照通常的编排方法,容器A已经启动,但Web服务器没有时间启动。 如果在集装箱B运行之前没有运行,集装箱B将永远不能跟上,等等。 最近我一直在尝试以下方法:在容器之间共享数据量; 在web服务器准备好之后,一个助手脚本将在卷中创build一个空文件; 运行一个脚本(通过Upstart服务),查找一个空文件来显示并触发下一个容器。 但是,使用服务很可能是导致此问题的原因:正在运行 sudo docker run -d -it –name=backend -v ~/docker-test/:/docker-test -v ~/aux/:/aux ubuntu /bin/bash -c "</path/to/test/script>" 只需在命令行中完成,但在Upstart服务执行的脚本(接收消息"/bin/bash </path/to/test/script> : no such file or directory" )中随机失败。 任何人都会遇到这个呢? 我很感激欢迎任何build议来克服这一点。
我是Docker的初学者,在Debian中有vsftpd,在vsftpd中configuration被动模式: pasv_enable=YES pasv_min_port=65000 pasv_max_port=65000 pasv_address=192.168.1.31 我用wireshark显示服务器响应与被动端口65000,但与被动IP 0.0.0.0,我不明白为什么如果我configuration被动IP。 当我运行docker我绑定端口21和65000(并在Dockerfile中我公开21和65000)和连接在端口21和主动模式是好的,但我需要也使用被动模式。 在wireshark我显示它: 227 Entering Passive Mode (0,0,0,0,253,232). Passive IP address: 0.0.0.0 (0.0.0.0) Passive port: 65000 Passive IP NAT: True Dockerfile: FROM debian:jessie RUN apt-get update RUN apt-get dist-upgrade -y RUN apt-get install -y -q –no-install-recommends vsftpd RUN apt-get clean RUN echo "local_enable=YES" >> /etc/vsftpd.conf RUN echo "chroot_local_user=YES" >> […]
我试图在Docker容器中运行xinetd。 我的Docker文件是非常基本的: # voip-monitor # # VERSION 0.0.1 FROM ubuntu:14.04 RUN apt-get update && apt-get install -y xinetd python EXPOSE 9090 CMD ["/usr/sbin/xinetd", "-d -dontfork"] 当我开始我的容器: docker run -d -p 9090:9090 –name voip-monitor voip-monitor 它启动,但在2秒后存在。 当我开始我的容器: docker run -d -p 9090:9090 –name voip-monitor voip-monitor /usr/sbin/xinetd -d -dontfork 它按预期工作。 我在这里错过了什么?
好吧,基本上我想要做的就是设置一个反向代理服务器,在nginx上提供https页面,并使用http将它们redirect到Jetty。 问题是,一旦servlet发现它被发送到http页面,实际上需要https并redirect到https地址。 以前,我已经在Jetty 7下运行了所有代码: <Set name="forwarded">true</Set> 到Jetty.xml的SelectChannelConnector,现在,我决定升级到Jetty 9我似乎无法find任何替代这个configuration,我敢肯定有没有问题,我的nginx设置,因为它用Jetty工作得很好7。 这里是我的nginxconfiguration的一部分,只是为了使事情更清晰: location / { proxy_pass http://127.0.0.1:8080; include /etc/nginx/proxy_params; } 虽然这是我的proxy_params文件: proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
我们希望通过consul来丰富我们的kubernetes环境,为应用程序/阶段/对等configuration提供一个可移植的层。 根据我目前的理解,这些将是我的步骤: build立/重新使用docker图像来提供领事服务器 为kubernetes写一个控制器和一个服务configuration文件 根据细节configuration三个复制: 1 魔法 魔术是指这样的事实,我需要运行一个命令,如: consul join <Node A Address> <Node B Address> <Node C Address> 刚刚开始的复制品。 我头脑中有两个半的障碍: 该命令只能在一台机器上执行? 我怎样才能访问对端的IP地址? 作为一个额外的问题:我怎样才能调用另一个命令,每次一个新的副本开始/移动? 我的直觉告诉我写一个自己的脚本,与kubernetes的内部etcd进行通信,以查看哪些节点已经注册并从那里获取。 这是正确的方向吗? 控制器模板中的命令是否会在正确的时间被触发,也就是在 etcd更新了新的pod / replica后? 引导领事数据中心
我们托pipe我们自己的内部Dockerregistry,并使用Ansible来configuration将build立/上传容器的Jenkins slave。 由于我们的注册是非SSL的,我们必须添加: "$DOCKER_OPTS –insecure-registry our.registry.com:5000" 到/ etc / default / docker文件,所以docker守护进程在启动时运行这个标志。 是否正确的方式来使用一个可靠的模板,只是replace整个文件? 或者我们应该使用lineinfile模块,只需添加这一行?
如何防止预构build的docker容器的用户无法访问该容器正在运行的实例中的shell? 我已经search了所有与这种情况相关的post,并且没有一个可行的解决scheme。 我试图阻止访问容器中的给定资源,为了这个查询,我们假设它在configuration文件中是一个序列号。 我build立在基于Ubuntu映像的java:7映像上。 要testing您的解决scheme,请执行以下操作: 创build并运行你的docker容器 导出你的容器 docker出口[容器名称] | gzip -c> mycontainer.tar.gz 在外部系统上导入您的容器 gzip -dc mycontainer.tar.gz | docker导入 – [容器名称] 运行容器 使用任何/所有以下方法将Shell装入正在运行的容器中: docker exec -it [容器名] bash docker附加[容器名称] docker run -ti –entrypoint = / bin / bash [container name] [容器名称]是您的容器的名称 bash,dash和sh都是有效的shell
问题 我试图在gitlab构build过程中从gitlab(自托pipe)克隆私人回购。 我使用ssh私钥没有密码,但有一个错误 key_load_private_type: incorrect passphrase supplied to decrypt private key 文件和debugging .gitlab-ci.yml image: tetraweb/php:5.5 variables: TIMEZONE: Asia/Novosibirsk before_script: # Create deploy private key – mkdir ~/.ssh – echo $DEPLOY_KEY_PRIVATE >> ~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa – echo "Host gitlab.example.com"$'\n\t'"IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config – ssh-keyscan -t rsa gitlab.example.com >> ~/.ssh/known_hosts test: script: – ssh -vT […]
我在我的ESX上使用CoreOS(没有云configuration – 我没有任何云提供商)。 我想更改docker容器的私有IP,因为它们无法响应使用相同IP范围172.xxx的networking
我正在尝试使用Docker Composetesting一些需要HDFS的服务。 由于被testing的服务,名称节点和数据节点将全部运行在同一台物理机器上(开发笔记本电脑),所以通过只运行一个数据节点来降低内存使用率将是一件好事。 我正在使用这些泊坞窗图像 。 如果我运行一个名称节点和3个数据节点,所有按预期工作。 我试图通过在两个节点的hdfs-site.xml中设置这个节点来运行只有一个数据节点,并通过组合运行只有一个数据节点: <property><name>dfs.replication</name><value>1</value></property> 这绝对是挑选这个,因为当它开始时,我在日志中看到这个: blockmanagement.BlockManager: defaultReplication = 1 blockmanagement.BlockManager: maxReplication = 512 blockmanagement.BlockManager: minReplication = 1 blockmanagement.BlockManager: maxReplicationStreams = 2 blockmanagement.BlockManager: replicationRecheckInterval = 3000 第一次写入成功就好了。 对于第二次写,我得到了这个(在客户端应用程序;没有在hadoop方面logging): java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try. (Nodes: current=[DatanodeInfoWithStorage[172.18.0.2:50010,DS-f97943bf-2cad-45e5-ae40-9ba947e54404,DISK]], original=[DatanodeInfoWithStorage[172.18.0.2:50010,DS-f97943bf-2cad-45e5-ae40-9ba947e54404,DISK]]). […]