问题标签 [linux-containers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 备份一个正在运行的 Docker 容器?
是否可以备份正在运行的 Docker 容器?该export
命令适合这样做吗?
macos - Docker 容器 - 如何配置以便在 vagrant 中运行时获得可行的 IP 地址?
Docker (www.docker.io) 看起来很棒。但是,在 Mac 上安装 VirtualBox、Vagrant ......最后是 Docker 之后,我发现无法从另一台计算机(或从 Mac 上的终端会话)访问在 Docker 容器中运行的服务。我试图访问的服务是 Redis。
问题似乎是没有路由到分配给 Docker 容器的 IP 地址。在这种情况下,容器的 IP 是 172.16.42.2,而 Mac 的 IP 是 196.168.0.3。
几点注意事项:
- 可以访问它——但只能从 VirtualBox 会话中访问。这可以使用 redis-cli -h 172.16.42.2 -p 6379 来完成。
- 我已将“config.vm.network :bridged”添加到 VagrantFile 以尝试获取,但这并没有解决问题。
linux - 在 Docker 容器中自动启动服务
我正在用 docker 做一些初步测试。目前我有我的图像,我可以运行一些容器,其中:
我这样做docker attach container_id
并启动 apache2 服务。
然后从主控制台我将容器提交到图像。
退出容器后,如果我尝试启动容器或尝试从提交的映像运行一个新容器,服务总是停止。
如何在服务启动的情况下创建或重新启动一个容器,例如 apache?
architecture - 从容器 (docker) 中发布您的应用程序
周末我在docker 的 IRC上问了这个问题,但在我想通答案之前不得不离开:
如果我有许多在容器中运行的应用程序(让我们暂时假设它们都在相同的物理硬件上运行,但不一定是这种情况)并且我希望它们中的每一个都能够找到每个其他自动。
使用某种注册表(例如etcd或 DNS-SD/Bonjour),您可以宣布您的服务和任何相关细节,并让其他应用程序了解它们并相应地路由流量。
这里的问题是,虽然应用程序可以知道它在容器中服务于哪个主机名/端口,但这不一定是它可以访问的端口或地址。有两个信息需要连接:
- 可以访问服务的位置;从容器外部访问
- 服务做什么(版本号、服务类型);可从容器内部访问
您如何建议我通过容器屏障获取此信息?
- 我可以通过 TCP 向容器公开 docker,因此应用程序可以查询它的显示位置,但这似乎违反了关注点分离。
- 我可以在我的容器中打开一个文件/端口,在容器启动后主机系统会查询该文件/端口以准备发布,但这感觉有点像我要重新发明 WSDL。
关于我应该如何解决这个问题的任何想法或指导?
docker - 在 Docker 中启动完整容器?
根据这个 github 问题,应该可以使用 Upstart、cron 等使用 Docker 0.6 或更高版本启动一个完整的容器,但我该怎么做呢?
我期待着
会像
我会得到一个登录屏幕,但它什么也没显示。我也尝试使用 ssh 访问它,但没有运气。我正在使用来自 Docker 索引的默认 ubuntu 映像。
docker - 如何将端口映射分配给现有的 Docker 容器?
我不确定我是否在这里误解了某些东西,但似乎只能通过从图像创建新容器来设置端口映射。有没有办法将端口映射分配给现有的 Docker 容器?
php - Docker和容器之间的连接
我正在尝试在 docker 的容器之间创建连接。一个带有 php5-fpm 的容器,第二个带有 nginx 的容器。
配置为 php5-fpm 默认值,只需少量更改:
和 nginx(/etc/nginx/sites-available/default):
然后我尝试使用https://github.com/jpetazzo/pipework创建连接,这就是为什么fastcgi_pass 192.168.1.2:9000;
。我尝试使用来自容器的 IP 直接,但没有。
当我尝试使用 lynx 打开页面时,我有 BadGateway。
我尝试发布端口 MASTER_PORT=$(sudo docker port $MASTER_ID 9000),但没有任何... ping 没有问题。从 nginx 远程登录到端口 9000 保持打开几秒钟,然后“连接关闭...”
谁能解释我做错了什么?谢谢!
/编辑/我尝试将fastcgi_pass更改为172.17.42.1:9000;(主机上 docker0 的地址),然后在主机上启动 tcpdump:
tcpdump -i docker0 端口 9000
我有:
因此数据包在容器之间传递......但为什么是 BadGateway?
docker - 提交映像时如何复制 Docker 容器的配置?
理想情况下,一切都将使用 Dockerfile 和卷进行整理,但有时这并不实用或不方便。
例如,我发现一个已经设置了 Ghost 的图像,并且它似乎可以工作。所以我添加了一些博客条目。然后我意识到我实际上需要修改 config.js 来设置邮件。
所以我停止了容器,提交,在 bash 中进行了一些更改,再次提交,然后再次启动容器运行 Ghost。但是我很难让它工作,因为新图像没有工作目录和环境的配置。
提交镜像时如何复制 Docker 容器的配置?也许我需要编写一个docker inspect
在容器上运行的脚本,将配置拉出,然后将其包含在docker commit
命令行中?
docker - 如何将 docker 容器的映像移动到永久磁盘?
我们注意到我们的容器占用了大量空间,其中一个原因是图像。
我们想移动图像。
我现在知道它们存储在
/var/lib/docker/graph/<id>/layer
有没有办法将这些移动到另一个位置/永久磁盘?
performance - 如何优化 docker 容器的性能?
我测试了基于redis容器。 https://index.docker.io/u/dockerfile/redis/
使用相同的 redis-benchmark,redis-server 在容器内运行比在托管操作系统上运行要慢得多,实际统计数据如下所示。(第一个基准是针对 docker 容器)
那么,有没有办法优化 docker 容器的性能呢?