我想在Openstack中创建实例,在对它们进行ssh之前已经在其中安装了Docker。因此,我自然而然地对Cloud-init技术产生了兴趣,因为它允许我们在第一次启动时在虚拟机上安装包。所以现在我尝试在启动时在我的实例上安装Docker,这是我传递给用户数据的代码;
#cloud-config
packages:
- docker.io这显然不起作用,那么我怎么才能让它起作用呢?
发布于 2020-07-03 07:31:47
如果您想要从Ubuntu实例上的Docker存储库进行安装,并且您不是特别喜欢下载和执行任意shell脚本的想法,那么您需要做的就是:
#cloud-config
apt:
sources:
docker.list:
source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
packages:
- docker-ce
- docker-ce-clicloud-init已经知道如何获取GPG密钥,如何添加APT源代码(即使是HTTPS),如何在安装包之前更新APT,以及如何执行各种shell脚本繁重的方法。
如果Docker更改了他们的repo签名密钥,您可以确信更改是合法的,然后使用以下内容获取新指纹:
$ 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]发布于 2014-10-31 04:40:24
有一个docker脚本,可以是#include'd,这对docker来说非常方便。不使用#cloud-config,而使用
#include https://get.docker.com发布于 2020-06-24 01:02:48
警告:您不应使用Docker便利性脚本(get.docker.com),因为它会影响环境:
不建议在生产环境中使用这些脚本的
以下是使用cloud-init在Ubuntu上安装Docker的三种方法,适用于所有不使用Docker便利脚本的环境。
通过apt-source安装(推荐方法):
#cloud-config
apt:
sources:
docker.list:
source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
packages:
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
- docker-ce
- docker-ce-cli
- containerd.io
# Enable ipv4 forwarding, required on CIS hardened machines
write_files:
- path: /etc/sysctl.d/enabled_ipv4_forwarding.conf
content: |
net.ipv4.conf.all.forwarding=1
# create the docker group
groups:
- docker
# Add default auto created user to docker group
system_info:
default_user:
groups: [docker]通过cURL完全安装:(gist reference)
#cloud-config
packages:
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
# Enable ipv4 forwarding, required on CIS hardened machines
write_files:
- path: /etc/sysctl.d/enabled_ipv4_forwarding.conf
content: |
net.ipv4.conf.all.forwarding=1
# create the docker group
groups:
- docker
# Install Docker, for production, consider pinning to stable versions
runcmd:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt-get update -y
- apt-get install -y docker-ce docker-ce-cli containerd.io
- systemctl start docker
- systemctl enable docker
# Add default auto created user to docker group
system_info:
default_user:
groups: [docker]使用默认软件包简化安装:(gist reference)
#cloud-config
packages:
- docker.io
# create the docker group
groups:
- docker
# Add default auto created user to docker group
system_info:
default_user:
groups: [docker]https://stackoverflow.com/questions/24418815
复制相似问题