I want to run a role on docker container .How can i achieve it ??
Any syntax of command will be helpful.
刀引导-x -P像这样
Thanks
答案 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]'