Openstack 如何使用cloud init安装docker?

Openstack 如何使用cloud init安装docker?,openstack,user-data,cloud-init,Openstack,User Data,Cloud Init,我想在Openstack中创建实例,在ssh之前已经安装了Docker。所以我自然对Cloud init技术感兴趣,因为它允许我们在第一次启动时在虚拟机上安装软件包。所以现在我正试图在启动时在我的实例上安装Docker,下面是我传递给用户数据的代码 #cloud-config packages: - docker.io 这显然不起作用,所以我怎样才能使它起作用呢?有一个docker脚本,它可以包含在内,这对docker来说非常方便。 使用 #include https://get.do

我想在Openstack中创建实例,在ssh之前已经安装了Docker。所以我自然对Cloud init技术感兴趣,因为它允许我们在第一次启动时在虚拟机上安装软件包。所以现在我正试图在启动时在我的实例上安装Docker,下面是我传递给用户数据的代码

#cloud-config

packages:
   - docker.io

这显然不起作用,所以我怎样才能使它起作用呢?

有一个docker脚本,它可以包含在内,这对docker来说非常方便。 使用

#include https://get.docker.com

如果您只需要将docker添加到已部署的实例中,Ricardo的解决方案非常好。但是,如果您仍然需要
#cloud config
(定制其他东西,如预安装的软件包),这里有一个受他的答案启发的简单解决方案,只需添加以下命令:

#cloud-config
# ... more config here

runcmd:
  - curl -fsSL https://get.docker.com -o get-docker.sh; sh get-docker.sh

Docker便利脚本环境的使用:

不建议在生产环境中使用这些脚本

这里有两种可能的方法可以在Ubuntu上使用cloud init在所有环境下安装Docker

完全安装:()

#云配置
包装:
-apt传输https
-ca证书
-卷曲
-gnupg代理
-通用软件属性
#启用ipv4转发,这在经过CIS加固的计算机上是必需的
写入\u文件:
-路径:/etc/sysctl.d/enabled\u ipv4\u forwarding.conf
内容:|
net.ipv4.conf.all.forwarding=1
#创建docker组
组:
-码头工人
安装Docker,为生产,考虑钉住到稳定版本
runcmd:
-curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg |apt密钥添加-
-添加apt存储库“deb[arch=amd64]https://download.docker.com/linux/ubuntu $(lsb_发布-cs)稳定“
-apt获取更新-y
-apt get安装-y docker ce docker ce cli containerd.io
-systemctl启动docker
-systemctl启用docker
#将默认自动创建的用户添加到docker组
系统信息:
默认用户:
小组:[码头工人]
简化安装:()

#云配置
包装:
-docker.io
#创建docker组
组:
-码头工人
#将默认自动创建的用户添加到docker组
系统信息:
默认用户:
小组:[码头工人]

如果您想从Docker存储库安装到Ubuntu实例上,并且不特别喜欢下载和执行任意shell脚本,那么您只需要以下内容:

#云配置
恰当的:
资料来源:
docker.list:
资料来源:deb[arch=amd64]https://download.docker.com/linux/ubuntu 美元发行稳定
密钥ID:9DC858229FC7DD38854AE2D88D81803C0EBFCD88
包装:
-码头工程师
-docker ce cli
cloud init已经知道如何获取GPG密钥,如何添加APT源(即使是HTTPS),如何在安装软件包之前更新APT,以及如何在各种shell脚本繁重的方式中完成所有其他工作

如果Docker曾经更改过他们的回购签名密钥,您可以确信更改是合法的,然后使用以下内容获取新指纹:

$ curl -sL https://download.docker.com/linux/ubuntu/gpg | gpg
gpg: keybox '/home/ubuntu/.gnupg/pubring.kbx' created
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub   rsa4096 2017-02-22 [SCEA]
      9DC858229FC7DD38854AE2D88D81803C0EBFCD88
uid           Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
$curl-sLhttps://download.docker.com/linux/ubuntu/gpg |gpg
gpg:keybox'/home/ubuntu/.gnupg/pubring.kbx'已创建
gpg:警告:未提供任何命令。想猜猜你的意思。。。
pub rsa4096 2017-02-22[SCEA]
9DC858229FC7DD38854AE2D88D81803C0EBFCD88
uid Docker释放(CE deb)
子rsa4096 2017-02-22[S]

您的OpenStack实例使用的是什么操作系统?或者更好的是,
curl-fsSLhttps://get.docker.com |sh
?回答得很好,证实了这项工作,
|gpg
是一款非常省时的产品