如何从Workstation引导到Docker容器?

时间:2015-02-19 11:16:49

标签: docker chef

I want to run a role on docker container .How can i achieve it ??

Any syntax of command will be helpful.

刀引导-x -P像这样

Thanks

1 个答案:

答案 0 :(得分:5)

拥有一个具有ssh访问权限的容器,您可以使用knife bootstrap。例如:

CONTAINER=$(docker run -d -e ROOT_PASS="mypass" tutum/ubuntu:trusty)
CONTAINERIP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CONTAINER})
knife bootstrap $CONTAINERIP -x root -P mypass --sudo -r 'role[myrole]'

第一行将运行一个启用了ssh守护程序的docker容器(image tutum/ubuntu:trusty),并将root ssh密码设置为" mypass"。此图像的CONTAINER_ID由docker run命令返回并保存到CONTAINER变量。

第二个命令将使用此CONTAINER_ID获取分配给此conteiner的IP地址,并将其保存到CONTAINERIP变量。

第三个命令引导容器中的chef,使用$ CONTAINERIP变量来引用其ip,以及容器的ssh凭据。这项工作假设您已正确配置了刀。

关于SSH的注意事项: 您使用的容器必须运行守护程序ssh。在docker docs中有对此的引用(http://docs.docker.com/examples/running_ssh_service/)。 Docker hub中还有很多图像(如示例中的tutum / ubuntu:trusty)。

关于暴露SSH端口的注意事项: 如果您的厨师工作站(配置了刀具的工作站)不是运行容器的工作站,您可以将ssh端口暴露给主机的一个,然后访问您的HOST_IP到该端口。例如:

CONTAINER=$(docker run -d -p 2222:22 -e ROOT_PASS="mypass" tutum/ubuntu:trusty)

knife bootstrap $HOST_IP -p 2222 -x root -P mypass --sudo -r 'role[myrole]'