【问题标题】:Install docker and docker-compose on Azure using cloud-Init使用 cloud-Init 在 Azure 上安装 docker 和 docker-compose
【发布时间】:2019-07-21 20:19:08
【问题描述】:

我想使用 Docker 和 Docker-compose 使用 cloud-init 引导我的 Azure VM。到目前为止,我尝试了类似下面的方法。

#cloud-config

package_update: true
package_upgrade: true

groups:
  - docker: [default]

runcmd:
  - [ sh, -c, "curl -sSL https://get.docker.com/ | sh" ]
  - [ sh, -c, "sudo curl -L "https://github.com/docker/compose/releases/download/$(git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose" ]
  - [ sh, -c, "sudo chmod +x /usr/local/bin/docker-compose" ]

但它没有安装 docker/docker-compose 并出现以下错误

cloud-init[958]: 2019-02-28 00:51:02,447 - util.py[WARNING]: Failed loading yaml blob. Invalid format at line 11 column 32: "while scanning a plain scalar
[  333.241244] cloud-init[958]:   in "<unicode string>", line 11, column 32:
[  333.245521] cloud-init[958]:         - [ sh, -c, "sudo curl -L "https://github.com/docker/compos ...
2019/02/28 00:51:04.015216 INFO Daemon Wire protocol version:2012-11-30
[  333.245619] cloud-init[958]:                                    ^
[  333.259509] cloud-init[958]: found unexpected ':'
[  333.259584] 2019/02/28 00:51:04.019282 INFO Daemon Server preferred version:2015-04-05
cloud-init[958]:   in "<unicode string>", line 11, column 37:
[  333.474295] cloud-init[958]:         - [ sh, -c, "sudo curl -L "https://github.com/docker/compose/rel ...
[  333.514672] cloud-init[958]:                                         ^
[  333.554215] cloud-init[958]: Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details."
[  333.593764] cloud-init[958]: 2019/02/28 00:51:04.361760 INFO Daemon Waiting for ssh host key be generated at /etc/ssh/ssh_host_rsa_key.pub [1800 attempts remaining, sleeping 1s]
2019-02-28 00:51:02,470 - util.py[WARNING]: Failed loading yaml blob. Invalid format at line 11 column 32: "while scanning a plain scalar
[  333.705350] cloud-init[958]:   in "<unicode string>", line 11, column 32:
[  333.731074] cloud-init[958]:         - [ sh, -c, "sudo curl -L "https://github.com/docker/compos ...
[  333.769118] cloud-init[958]:                                    ^
[  333.789992] cloud-init[958]: found unexpected ':'
[  333.808855] cloud-init[958]:   in "<unicode string>", line 11, column 37:
[  333.831502] cloud-init[958]:         - [ sh, -c, "sudo curl -L "https://github.com/docker/compose/rel ...
[  333.863028] cloud-init[958]:                                         ^
[  333.885648] cloud-init[958]: Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details."
[  333.915174] cloud-init[958]: 2019-02-28 00:51:02,470 - util.py[WARNING]: Failed at merging in cloud config part from part-001

除此之外,我怀疑如何将 Azure 自动创建的默认用户(由 UI 提供)添加到 docker 组。

【问题讨论】:

    标签: azure cloud-init


    【解决方案1】:

    你有 " 在其他 " 里面,如果不转义它就不起作用。至于用户。我认为创建的默认用户的 id 为 1000,您可以使用它(之前可能测试过这个假设)。

    【讨论】:

      【解决方案2】:

      花了一些时间后,我自己解决了。

      #cloud-config
      
      package_update: true
      
      # Setup swap memory
      disk_setup:
          ephemeral0:
              table_type: mbr
              layout: [66, [33, 82]]
              overwrite: True
      fs_setup:
          - device: ephemeral0.1
            filesystem: ext4
          - device: ephemeral0.2
            filesystem: swap
      mounts:
          - ["ephemeral0.1", "/mnt"]
          - ["ephemeral0.2", "none", "swap", "sw", "0", "0"]
      
      # Enable Docker's swap limit support
      bootcmd:
          - [ sh, -c, 'sudo echo GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" >> /etc/default/grub' ]
          - [ sh, -c, 'sudo update-grub' ]
          - [ cloud-init-per, once, mymkfs, mkfs, /dev/vdb ]
      
      # Install docker and docker-compose
      runcmd:
          - [ sh, -c, 'curl -sSL https://get.docker.com/ | sh' ]
          - [ sh, -c, 'sudo curl -L https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep "tag_name" | cut -d \" -f4)/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose' ]
          - [ sh, -c, 'sudo chmod +x /usr/local/bin/docker-compose' ]
      
      # Add default auto created user to docker group
      system_info:
          default_user:
              groups: [docker]
      

      【讨论】:

      【解决方案3】:

      我刚刚使用 Ubuntu 18.04-LTS 在 Azure 上进行了测试:

      #cloud-config
      package_upgrade: true
      
      packages:
          - docker.io
          - docker-compose
      
      # create the docker group
      groups:
          - docker
      
      # assign a VM's default user, which is mydefaultuser, to the docker group
      users:
          - default
          - name: mydefaultuser
            groups: docker
      

      runcmd 对于此设置可以留空。

      【讨论】:

        猜你喜欢
        • 2021-02-17
        • 2014-08-16
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        相关资源
        最近更新 更多