2015-05-29 106 views
2

我需要能够部署一个新容器或从另一个运行的码头容器管理在CoreOS中运行的码头容器。管理来自另一个容器的容器,码头

码头工人的版本是1.5.0 coreos版本647.2.0

现在我的过程我的部署应用程序的新实例使用的shell脚本。

它基本上确实:

  1. 复制的node.js应用程序的源代码,以一个新的文件夹
  2. cd到
  3. 部署在分离模式设置一个新的搬运工容器“PWD”作为-v到工作目录,然后运行应用程序的

我在想,如果可以从容器内执行shell脚本,以便它在coreos或Ar部署一个新的容器e此方法有任何替代方法。

另一个目标是能够停止正在运行的容器。

任何意见或建议将不胜感激。

+0

您可以配置Docker守护进程以侦听'docker0',然后您可以使用[docker remote API](https://docs.docker.com/reference/api/docker_remote_api/) – xuhdev

回答

3

运行与安装在泊坞窗客户&插座的控制容器,你将能够

EDIT(泊坞窗容器内客户运行搬运工)从控制容器中泊坞窗守护:待办事项docker套接字需要root访问权限,这意味着容器能够控制docker守护进程并启动一个包含器以在主机上获得root用户,因此将其用于您信任的容器并且只有您需要访问。

$ docker run \ 
    -v /var/run/docker.sock:/var/run/docker.sock \ 
    -v /usr/bin/docker:/usr/bin/docker \ 
    -v /usr/lib/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02 \ 
    ubuntu docker --version 

Docker version 1.1.2, build d84a070 

还测试了最新的coreOS /泊坞窗:

[email protected] /usr/lib $ docker run -it --name=test --rm -h=dod -v /var/run/docker.sock:/var/run/docker.sock -v `which docker`:/usr/bin/docker -v /usr/lib/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02 ubuntu bash 
[email protected]:/# docker ps -a 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
6746d8cd1c8d  ubuntu:latest  "bash"    3 seconds ago  Up 2 seconds       test 
[email protected]:/# docker --version 
Docker version 1.6.2, build 7c8fca2-dirty 
[email protected]:/# 

编辑:为Debian:杰西这将不无libsqlite3-0工作,我们可以挂载它形成主机或搜索包:

[email protected]:/# ldd `which docker` 
     linux-vdso.so.1 (0x00007ffdb7dc8000) 
     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe8a77df000) 
     libsqlite3.so.0 => not found 
     libdevmapper.so.1.02 => /usr/lib/libdevmapper.so.1.02 (0x00007fe8a7593000) 
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe8a71ea000) 
     /lib64/ld-linux-x86-64.so.2 (0x00007fe8a79fc000) 
     libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fe8a6fdb000) 
     librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe8a6dd3000) 
     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe8a6bcf000) 

找出哪些软件包提供这个文件为Debian:杰西使用packages.debian.org/search

编辑:容器内的用户需要有权限从主机读取泊坞窗插座,如果它是一个非root用户,您可以尝试在容器中有一个docker组,但组gid应与主机docker组匹配(如果实际工作,则未经确认)。

另外,您可以apt-get install sudo

echo "<user_name> ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-custom && \ 
chmod 0440 /etc/sudoers.d/90-custom 

此时您可以编写脚本为用户sudo docker ..控制的主机泊坞窗守护进程。

+0

对不起,我是使用码头版本1.5.0,我试过这不起作用 –

+0

奇怪,它已经有一段时间,因为我用这个,但我希望它仍然工作,让我测试 –

+0

对不起,它实际上工作我只是有添加适当的码头目录设置。非常感谢你! –

相关问题