首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cloud-init安装docker?

如何使用cloud-init安装docker?
EN

Stack Overflow用户
提问于 2014-06-26 05:22:23
回答 5查看 11K关注 0票数 14

我想在Openstack中创建实例,在对它们进行ssh之前已经在其中安装了Docker。因此,我自然而然地对Cloud-init技术产生了兴趣,因为它允许我们在第一次启动时在虚拟机上安装包。所以现在我尝试在启动时在我的实例上安装Docker,这是我传递给用户数据的代码;

代码语言:javascript
复制
#cloud-config

packages:
   - docker.io

这显然不起作用,那么我怎么才能让它起作用呢?

EN

回答 5

Stack Overflow用户

发布于 2020-07-03 07:31:47

如果您想要从Ubuntu实例上的Docker存储库进行安装,并且您不是特别喜欢下载和执行任意shell脚本的想法,那么您需要做的就是:

代码语言:javascript
复制
#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-cli

cloud-init已经知道如何获取GPG密钥,如何添加APT源代码(即使是HTTPS),如何在安装包之前更新APT,以及如何执行各种shell脚本繁重的方法。

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

代码语言:javascript
复制
$ 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]
票数 22
EN

Stack Overflow用户

发布于 2014-10-31 04:40:24

有一个docker脚本,可以是#include'd,这对docker来说非常方便。不使用#cloud-config,而使用

代码语言:javascript
复制
#include https://get.docker.com
票数 10
EN

Stack Overflow用户

发布于 2020-06-24 01:02:48

警告:您不应使用Docker便利性脚本(get.docker.com),因为它会影响环境:

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

以下是使用cloud-init在Ubuntu上安装Docker的三种方法,适用于所有不使用Docker便利脚本的环境。

通过apt-source安装(推荐方法):

代码语言:javascript
复制
#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)

代码语言:javascript
复制
#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)

代码语言:javascript
复制
#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]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24418815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档