作为部署策略的一部分,我正在使用Upstart管理Docker容器。
为此,我需要从注册表中提取图像并创建一个命名容器(如Upstart脚本上建议的那样,运行容器不会管理生命周期)
是否有一种无需先运行映像即可创建容器的方法?我不想启动一个容器(可能会带来副作用),停止它,然后在其他地方进行管理。
例如,类似:
docker.io create -e ENV1=a -e ENV2=b -p 80:80 --name my_first_container sample/containe
您可以使用Docker Remote API来实现。
首先调整docker daemon的运行方式。除了默认的unix套接字外,还配置它以侦听端口4243上的HTTP请求:
sudo sh -c "echo 'DOCKER_OPTS=\"-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock\"' > /etc/default/docker"
现在,您可以使用/containers/create
端点创建容器而不运行它:
curl -X POST -H "Content-Type: application/json" http://localhost:4243/containers/create?name=my_first_container -d '
{
"Name": "dtest2",
"AttachStdin": "false",
"AttachStdout": "false",
"AttachStderr": "false",
"Tty": "false",
"OpenStdin": "false",
"StdinOnce": "false",
"Cmd":["/bin/bash", "-c", "echo Starting;sleep 20;echo Stopping"],
"Image": "ubuntu",
"DisableNetwork": "false"
}
'
请注意?name=my_first_container
我添加到curl请求url中的参数。这就是您命名容器的方式。
旁注-无需添加HTTP接口就可以实现同样的目的,但是使用简单的curl POST请求似乎更容易显示解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句