如何向swarm集群不同节点上的mongod容器提供证书进行内部authentication?

我正在docker swarm中试验mongod。 我用docker-compose文件(v3)在swarm中部署了mongod服务。 我的群由三个节点组成 node1 node2 node3 当我使用docker stack deploy –compose-file <my-docker-compose-file>部署mongod服务时,mongod服务在三个节点之间分配,然后将这些mongod实例configuration为副本集。 要在副本集中启用内部authentication,我需要提供为在容器内运行的mongod实例生成的x.509证书。 我已经生成了所有相关的证书,这些证书位于node1目录中。 现在我需要将这些证书提供给在服务中运行的容器。 我无法想出一个方法来将configuration添加到docker-compose文件,该文件将证书从node1挂载到在node2和node3上运行的容器。 我努力了: services: rs1a: … volumes: – certs:/certs volumes: certs: driver: local driver_opts: device:/path/to/dir/containing/certs/on/node1 它没有工作,并提出一个错误no such device 请注意,当我使用组合文件重新部署服务时,它们可能会被分发到任何随机节点,因此我需要在可共享的地方拥有所有mongod实例的证书。 我不能在节点上使用mongod实例特定的证书。 我不知道这是不是一个好的方法来解决这个问题。 如果有的话,请提出更好的方法。

我可以在没有-v选项的docker中挂载一个windowsnetworkingpath吗?

我可以在我的家乡path的泊坞窗外的Ubuntu(14.04)机器上安装一个窗口位置。 sudo mount -t cifs -o username=myuser,password="mypass" /\/\my_win_machine/\test /net/win_share/ 我可以在我的Ubuntu机器上的'/ net / win_share'位置看到windows机器中存在的所有文件。 现在我在使用Ubuntu 14映像的Docker容器中尝试了同样的事情。 我做了以下: docker run –name="raji" -it ubuntu:14.04 bash #adduser myuser 它在容器中创build了用户,我也把它添加到sudo组中 然后我做了以下: sudo mount -t cifs -o username=myuser,password="mypass" /\/\my_win_machine/\test /net/win_share/ 它会抛出错误: mount: block device //my_win_machine/test is write-protected, mounting read-only mount: cannot mount block device //my_win_machine/test read-only 在docker里面可以做上面的事吗?

在Docker容器中运行httpd需要在更新其他容器中的服务之后重新启动

我遇到了一个httpd:2.4容器的困难,我正在使用它作为在同一物理机器上的其他容器上运行的一些其他服务的反向代理。 这是我的httpd.conf文件 https://gist.github.com/a4sh3u/add1ee28f1cfe206491162c3745967d1 我通过3个撰写文件运行我所有的服务。 问题:当我更新任何其他服务(不是我的httpd容器设置)时,我总是必须重新启动httpd容器。 从httpd容器访问服务的链接保持不变。 更多信息: Docker version 1.13.0, build 49bf474 docker-compose version 1.8.1, build 878cff1 Running Ubuntu trusty

如何将外部IP添加到docker集装箱?

所以一个星期以来我一直在研究docker和所有可用的选项。 我有一个VPS与3个额外的静态IP地址。 这个想法是将每个容器连接到不同的IP,或者可以添加3个不同容器的networking,每个networking连接到不同的IP。 我前几天看到一些互联网上的教程,但我没有保存他们,我找不到他们了。 IP是静态的,由我们的ISP(ovh)提供。 到目前为止,我试图连接到IP使用子网xx.xx.xx.xx / 32(只有1 IP),但它给了我错误谢谢 PS。 我是docker工人的新手 – 编辑 – just tried this code docker network create \ –driver=bridge \ –subnet=AAA.BBB.CCC.DDD/32 \ –ip-range=AAA.BBB.CCC.DDD/32 \ –gateway=AAA.BBB.CCC.DDD \ br0 我得到当前的错误 Error response from daemon: failed to allocate gateway (AAA.BBB.CCC.DDD): No available addresses on this pool AAA.BBB.CCC.DDD代表来自ISP的公共IP

使用smart_open lib和s3 docker镜像

我试图使用python lib smart_open和s3 docker 镜像来在本地运行一些functiontesting。 Docker在端口4569上运行,我创build了一个testing桶: aws s3 ls –endpoint-url http://localhost:4569 2017-04-03 15:17:38 my-bucket 示例脚本如下所示: import smart_open with smart_open.smart_open('s3://my-bucket/mykey.txt', 'wb', host="http://127.0.0.1:4569") as fout: for line in ['first line', 'second line', 'third line']: fout.write(line + '\n') 回溯的错误: Traceback (most recent call last): File "test.py", line 13, in <module> with smart_open.smart_open('s3://my-bucket/mykey.txt', 'wb', host="http://127.0.0.1:4569") as fout: File "/Users/giorgiocarta/Scripts/Python_Envs/apollo-petl_env/lib/python2.7/site-packages/smart_open/smart_open_lib.py", […]

docker堆栈/群golang端口没有暴露

我有一个棘手的问题一段时间,与新的群模式。 我只是尝试在第一个容器中运行一个去web服务器,在第二个容器中运行一个mongo数据库。 因此,我正在使用一个私人testing图像和标准的mongo图像。 调用端口27017上的mongo服务工作。 go run main.go命令在testing服务中运行。 我在Dockerfile中公开:8080。 另外端口:“4444:8080”设置为去服务(用户,testing图像)。 Dockerfile: 1 FROM crypvert-base:latest 2 3 ADD . /go/src/test 4 WORKDIR /go/src/test 5 6 RUN go get -d -v 7 RUN go install test 8 ENTRYPOINT /go/bin/test 9 10 EXPOSE 8080 泊坞窗,stack.yml 1 version: "3" 2 3 services: 4 users: 5 image: test:latest 6 ports: 7 […]

牧场主和elasticsearch巢

我正在使用一个Docker容器,它是一个使用Nest的searchAPI,容器与另一个容器进行通信,该容器是两个弹性search实例的负载均衡器。 我注意到,当一个弹性search实例发生故障时,searchAPI无法通过负载均衡器调用弹性,尽pipe事实上我可以将这个盒子curl到负载均衡器,负载均衡器返回响应仍然弹起的单个弹性实例。 任何想法是怎么回事?

Docker将容器强制到特定的物理接口

过去一周左右,我一直在网上寻找解决办法,但到目前为止我已经空手而归了。 有三个networking接口可用于我的主机,我需要在wlan1接口上执行一个phantomjs脚本。 我的想法是利用Docker,但遇到问题locking一个容器到一个特定的接口。 以下是我所尝试的,全部或者redirect到另一个界面,或者没有networking访问。 唯一允许显式访问我需要的接口的方法是closures所有其他接口。 /etc/systemd/system/docker.service.d/docker.conf [Service] ExecStart= ExecStart=/usr/bin/docker daemon -b=wlan1 –ip=10.0.0.151 -H fd:// docker-compose.yml version: "2" networks: open_network_1: driver: bridge driver_opts: com.docker.network.host_binding_ipv4: "10.0.0.151" services: open_wifi_phantomjs: image: https://github.com/ollihoo/phantomjs-docker-rpi networks: – open_network_1 ports: – 10.0.0.151:80:80 – 10.0.0.151:443:443 我也摆弄着ip routing和iptables ip route del 172.19.0.0/16 ip route add 172.19.0.0/16 dev wlan1 proto kernel scope link src 172.19.0.1 iptables […]

spark-submit job.py不能使用sparkConf传递configuration参数

我使用bin / spark-submit脚本提交我的python作业。 我想通过SparkConf&SparkContext类在python代码中configuration参数。 我尝试在SparkConf对象中设置appName,master,spark.cores.max和spark.scheduler.mode,并将其作为参数(conf)传递给SparkContext。 事实certificate,这个工作并没有发送到我设置的独立集群(它只是在本地运行, 单击以查看localhost:4040 / environment /的截图 )的主服务器。 通过下面的打印语句,很明显看到我传递给SparkContext的SparkConf具有所有4个configuration(),但来自SparkContext对象的confvariables没有任何更新,尽pipe默认情况下是conf。 对于其他方法,我尝试使用conf/spark-defaults.conf或–properties-file my-spark.conf –master spark://spark-master:7077 。 它的工作原理。我也尝试使用主参数分别设置主 sc = pyspark.SparkContext(master="spark://spark-master:7077", conf=conf) 而且它也起作用: SparkContextConf: [ ('spark.app.name', 'test.py'), ('spark.rdd.compress', 'True'), ('spark.driver.port', '41147'), ('spark.app.id', 'app-20170403234627-0001'), ('spark.master','spark://spark-master:7077'), ('spark.serializer.objectStreamReset', '100'), ('spark.executor.id', 'driver'), ('spark.submit.deployMode', 'client'), ('spark.files', 'file:/mnt/scratch/yidi/docker-volume/test.py'), ('spark.driver.host', '10.0.0.5') ] 所以似乎只有conf参数不能正确地被SparkContext拥塞。 星火工作代码: import operator import pyspark def main(): '''Program entry […]

AWS云表单任务定义条件命令

比方说,我有一个应用程序,可以运行在空运行模式,在命令行上设置一个标志; myapp –dryrun , myapp –dryrun的任务定义是: MyTaskDefinition Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: – Name: myApp Image: user/myapp:latest Command: – ./myapp – –dryrun Environment: – Name: SOME_ENV_VAR Value: !Ref SomeEnvVar 我正在尝试为可在开发和生产环境中使用的任务定义创build单个CloudForm模板,其中干运行标志仅设置为开发环境。 有没有一些方法来设置条件命令,或者我会诉诸一个hackystring,我通过像: Command: – ./myapp – !Ref DryRun