现象
当用 Mac air作为服务器时,远程登录上去后想使用 docker,却报如下错:
Cannot connect to the Docker daemon at unix:///Users/aborn/.docker/run/docker.sock. Is the docker daemon running?
原因分析
因为 docker 有一个守护进程,如果这个守护进程没有起来,就无法使用 docker 命令对容器进行管理。如下图:
对于 linux 系统这个守护进程是 dockerd ,但对于 mac 系统,需要启动 Docker Desktop 图形界面才能启动守护进程,它却无法在远程终端中打开。
问题解决
看来 docker 无法解决这个问题,对该提问网友给出了两个解决方案:
- podman
- rancher
通过了解 podman 我们发现其是最理想的解决思路,因为podman 和 docker的命令基本一致。同时,podman 不需要守护进程,区别如下图:
podman替代 docker
- 安装 podman
可以通过 brew 进行安装,安装教程参考。brew install podman
- 将 docker 命令切换为 podman (编辑~/.bash_profile文件,增加以下行)
alias docker=podman
- 初始化启动,执行以下两个命令
podman machine init
podman machine start
- 重新制作镜像和容器,最后再启动容器。这两步操作和原先的 docker 一样。
- 服务器重启后,可以重新启动podman ( podman machine start) 。之后,就可以启动已有容器。 (podman ps -a 查看所有容器)
docker start [容器 ID]
最后执行 podman container ls 不再报错。
执行 docker images 不再报错。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/centos/centos latest a0477e85b8ae 3 years ago 256 MB