我有一个应用程序,它只能在具有完整 GPU 访问/硬件 OpenGL 的 X11 环境中运行。
我可以在 Hetzner 服务器上运行它,因为他们的机器有不错的 GPU。安装了 Ubuntu 桌面并运行了 x11vnc。
我正在考虑将所有桌面内容放在 docker 容器中并在主机上安装 ubuntu 服务器。有没有办法让 docker 容器完全访问 GPU?
谢谢!莱昂蒂
使用 CoreOS、Docker 和 systemd 来管理我的服务,我想正确执行服务发现。由于 CoreOS 使用 etcd(分布式键值),因此有一种非常方便的方法可以做到这一点。在 systemd 的 ExecStartPost 上,我可以毫无问题地将启动的服务插入到 etcd 中。我的用例需要这样的东西:
ExecStartPost=/usr/bin/etcdctl set /services/myServiceName '{ \"host\": \"%H\", \"port\": 5555 }'
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力。
但这就是我的想法出现的地方。如果我只是运行docker run -p 5555,Docker 有能力随机分配一个端口,这很棒,因为我不必在 *.service 文件中静态设置它,而且我可以在同一主机上运行多个实例。如果我可以获得随机分配的端口并插入而不是静态的5555怎么办?
原来我可以使用该docker port命令来获取端口,并通过一些格式我们可以只获取端口
$(echo $(/usr/bin/docker port my-container-name 5555) | cut -d':' -f2)
Run Code Online (Sandbox Code Playgroud)
如果我这样设置(使用 bash),它会起作用:
/usr/bin/etcdctl set /services/myServiceName '{ \"host\": \"%H\", \"port\": '$(echo $(/usr/bin/docker port my-container-name 5555) | cut -d':' -f2)' }'
Run Code Online (Sandbox Code Playgroud)
但是使用 systemd 我就是无法让它工作。这是我正在使用的代码:
ExecStartPost=/usr/bin/etcdctl set /services/myServiceName '{ \"host\": \"%H\", \"port\": '$(echo $(/usr/bin/docker port …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 docker 安装 php-fpm 和 nginx,但我遇到了 nginx 问题,它返回 502 Bad gateway 错误,但是当我尝试继续处理任何 HTML 文件时,只能正确显示。我必须对 php 文件做什么才能在这个系统上正常工作?
Nginx 配置站点:
server {
listen 80;
server_name api.local.dev;
access_log /var/log/nginx/api.access.log;
error_log /var/log/nginx/api.error.log;
root /www;
charset utf-8;
index index.php index.html index.htm;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Run Code Online (Sandbox Code Playgroud)
文件
FROM ubuntu:13.10
# Keep upstart from complaining
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -sf /bin/true /sbin/initctl
# Let …Run Code Online (Sandbox Code Playgroud) 上下文 - 我正在尝试在 MacOSX 上运行 docker 集群。
运行 docker 的安装过程的一部分是安装pipework。
管道依赖 /var/run/netns
我的问题是:Mac OS X 是否有等效的 netns?
我使用 HAPROXY 容器作为虚拟 HPC 集群的入口点。根据前缀,请求被转发到不同的容器。
:80/foswiki/ -> :80/foswiki/ :80/kibana/ -> :80/kibana/ :80/graphite-api/ -> :80/graphite-api/ ...
我使用的配置非常简单:
前端http-in
绑定 *:80
acl uri_foswiki path_beg /foswiki
use_backend srv_foswiki 如果 uri_foswiki
# GitLab
default_backend srv_gitlab
后端 srv_foswiki
平衡循环
cookie SERVERID 插入
选项 httpclose
选项转发
服务器 foswiki 172.17.0.3:80 cookie
问题是有网络服务器直接以 root 身份为网站提供服务,没有前缀。'Graphite-web',例如或 gitlab 图像。
我尝试削减前缀并进一步转发它,但我真正想要的是 haproxy 将前缀保留在路径中,并且它对后端服务器是透明的。如果我点击“gitlab_server:80/dashboard/”,它应该显示为“frontend_ip:80/gitlab/dashboard”。
后端 srv_gitlab
平衡循环
#cookie SERVERID 插入
模式http
reqrep ^([^\ ]*)\ /gitlab/(.*) \1\ /\2
平衡循环
选项转发
服务器 gitlab 172.17.0.18:80 cookie
我不认为这是一件很难的事情,但在我看来,我的谷歌技能有点残废。每次我最终都会重写不保留前缀的规则。
任何人?基督教
编辑:用户无法访问内部 IP 地址...
我正在使用 docker,我希望能够在其中启动一个 mpi 应用程序。
我正在使用 ubuntu:latest 作为基本映像,并且我已经安装了编译我的程序并将其与 mpi 链接所需的工具。
当我使用 mpirun 启动程序时,我收到以下警告:
[c1dab84c3fac:10417] [[INVALID],INVALID] ORTE_ERROR_LOG: Not found in file ess_hnp_module.c at line 170
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems. This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an …Run Code Online (Sandbox Code Playgroud) 我有一个正在运行的容器,其中安装了一个环境变量文件,如下所示:
docker run -d --env-file ./env.list my/image一切正常,现在我已经更新了我的./env.list文件,并希望反映更新的文件。尝试重新启动容器,但没有用。
我在docker 容器中运行gitlab,它将其依赖项(MySQL、Redis、Mailserver)很好地分离到单独的 docker 容器中。运行它们不是问题,我以相反的顺序启动它们:首先是依赖项,而不是 gitlab 本身。
有时我必须重新启动 docker 主机。目前我通过 ssh 进入 docker 主机并手动重启容器。有没有更好的方法呢?就像只是告诉一些服务启动 gitlab 容器,然后它会先启动它的依赖项?我知道我可以为每个 docker 容器创建单独的 init 脚本,但这不是我想要的。
我想将 infiniband 传递到 docker 容器,以便我可以通过 ipoib 运行一些高性能应用程序并使用 rdma。
目前,我正在使用 xen 虚拟机执行此操作。现在我正在考虑使用 CoreOS 和 docker 作为重量更轻且更易于管理的替代方案。
我有一个 IPoIB 设备 ib0,分配给它的静态 IP 为 10.10.10.10。我已经设法通过以下方式将其暴露在 docker 容器中:
docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm -t -i ubuntu:14.04 /bin/bash
太好了,这有效。ib0 在 docker 容器内可用。
现在假设我有一个双端口 HCA。在主机上,它们显示为 ib0 和 ib1,并分配了两个 ip。10.10.10.10/ib0 和 10.10.10.11/ib1
现在我想将 ib0 传递给第一个容器,将 ib1 传递给第二个。由于 --net=host 选项,使用上述方法两者都会出现在两个容器中。但是,不指定它意味着设备根本不会出现。
另一种情况是我有很多机器使用 SR-IOV 将 infiniband 设备传递到 xen 虚拟机。我如何才能将虚拟功能 infiniband 设备传递给 docker 容器并使其出现?
注意:管道在这种情况下不起作用,但如果我更好地理解它,它可能会被黑客入侵以做我想做的事。我只是不太明白它在做什么......还没有。
问题:
在非 docker 解决方案中,SSL 证书可以位于 /etc/pki/CA/.... 并在 /etc/httpd/conf.d/*.conf 文件中引用这些证书。这些 SSL 证书必须如何在 docker 镜像中管理/放置/使用以用于安全的 apache httpd 服务器而不是 docker 镜像的一部分?
目标:
使用提供的 SSL 证书为安全的 apache httpd 服务器创建 docker 映像。
如何解决这个问题的想法:
Docker 卷可以通过使用 将证书从主机挂载到映像来解决它docker run -v /HOST/SSL/PATH:/CONTAINER/SSL/PATH,然后可以从映像中引用它。
这是要走的路,还是可以用另一种方式解决这个问题?
docker ×10
linux ×3
dependencies ×1
disk-volume ×1
haproxy ×1
https ×1
infiniband ×1
mac-osx ×1
nginx ×1
php-fpm ×1
startup ×1
systemd ×1
ubuntu ×1