如何从 Workstation Bootstrap 到 Docker 容器?

How to Bootstrap from Workstaion to Docker conatiner?

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

Any syntax of command will be helpful.

刀bootstrap -x -P 像这样

Thanks

拥有一个可以通过 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]'

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

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

第三个命令在容器中引导 chef,使用 $CONTAINERIP 变量引用其 ip 和容器的 ssh 凭据。如果您正确配置了 knife,这将起作用。

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

关于暴露 SSH 端口的注意事项: 如果您的 Chef 工作站(配置了刀的那个)不是 运行 容器的那个,您可以将 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]'