我想使用cloud-init使用Docker和Docker-compose引导我的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组。
答案 0 :(得分:1)
您在其他"
内有"
,如果不逃避就无法工作。对于用户。我认为默认用户创建的ID为1000,您可以使用该ID(可能之前要测试此假设)。
答案 1 :(得分:1)
我自己使用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
可以保留为空白。
答案 2 :(得分:0)
花了一些时间后,我自己解决了。
#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]