admin管理员组

文章数量:1635682

背景: 使用docker toolbox时创建容器使用privileged参数,然后启动就会报错:docker: Error response from daemon: cgroups: cannot found cgroup mount destination: unknown.。

解决办法: 在 docker machine 的主机上,也就是virtual box中的linux虚拟机上(docker实际的宿主机)执行以下命令:

# 1、Windows在cmd下执行docker-machine ssh 进入Linux虚拟机
docker-machine ssh default
#2.在linux虚拟机上,添加下面挂载
sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

问题: 但是每次重启docker machine 上面的挂载会被删除,因此每次重启docker都要运行一遍,好麻烦。


解决办法: 将挂载命令植入到docker启动脚本中 ======> 在docker toolbox安装目录下的start.sh文件末尾加上:

"${DOCKER_MACHINE}" ssh "${VM}" "sudo mkdir /sys/fs/cgroup/systemd && sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd" 

文件参照如下:

if [ $# -eq 0 ]; then
  # 在这里加上一行远程执行挂载命令
  "${DOCKER_MACHINE}" ssh "${VM}" "sudo mkdir /sys/fs/cgroup/systemd && sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd" 
  echo "Start interactive shell"
  exec "$BASH" --login -i
else
  echo "Start shell with command"
  exec "$BASH" -c "$*"
fi

这样每次启动docker quickstart 就直接可以用啦 ~

本文标签: 容器异常DockerToolboxcgroups