如何从Workstaion引导到Docker conatiner?

gau*_*rav 0 chef-infra docker

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

Any syntax of command will be helpful.
Run Code Online (Sandbox Code Playgroud)

刀引导-x -P像这样

Thanks
Run Code Online (Sandbox Code Playgroud)

Jav*_*oso 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]'
Run Code Online (Sandbox Code Playgroud)

第一行将运行一个docker容器(image tutum/ubuntu:trusty),启用ssh守护程序,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]'
Run Code Online (Sandbox Code Playgroud)