我尝试启动一个服务器,该服务器应该使用一个简单的“hello-world”容器运行 docker 和 docker-compose。我的 YAML 文件如下所示:
#cloud-config
ssh_authorized_keys:
- ssh-rsa MY_SSH_KEY_HERE
package_update: true
package_upgrade: true
packages:
- docker.io
runcmd:
- [ sh, -c, "sudo apt install -y docker" ]
- [ sh, -c, "sudo apt install -y docker-compose"]
- [ sh, -c, "sudo service docker start" ]
rancher:
services:
rancher-server:
image: hello-world
restart: always
ports:
- 80:80
environment:
- TEST_VAR=TEST
Docker 已安装但无法启动镜像
root@test ~ # which docker
/usr/bin/docker
root@test ~ # which docker-compose
/usr/bin/docker-compose
> sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
顺便说一句:是否有必要包括
packages: docker.io
?
最佳答案
在此答案中,如果您不使用 Azure VM,则可以忽略将默认 azure 用户添加到 docker 组。但是请记住,要运行 docker,您必须将当前用户添加到 docker 组,否则您可能会收到权限被拒绝的错误。
#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 (System restart required)
bootcmd:
- [ sh, -c, 'sudo echo GRUB_CMDLINE_LINUX=\"cgroup_enable=memory swapaccount=1\" >> /etc/default/grub' ]
- [ sh, -c, 'sudo update-grub' ]
# Install latest stable 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' ]
- [ sh, -c, 'sudo docker run -d nginx:latest' ]
# Add default azure user to docker group
system_info:
default_user:
groups: [docker]
# Restart the system
power_state:
delay: "now"
mode: reboot
message: First reboot
condition: True
关于docker - 如何使用 cloud-init (cloud-config) 启动 docker 容器(或 docker-compose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232868/