报错

错误1:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

常见的解决方法csdn上都有,但是还有可能是一些阴间的原因

如果csdn上的方法都没用的话,可以检查下/etc/docker/key.json文件是否正确,问题包括但不限于:

  • 缺少花括号等语法错误
  • 出现了错误的键值对,有冗余内容

正确的格式应当类似如下内容:

1
2
3
4
5
6
7
8
{
"crv":"P-256",
"d":"36XGfrRv-_lPluKctIHib1cBUu9qFB3sfKkJEwJ13c0",
"kid":"ZL2W:IAUT:PCS5:E22Q:2AWK:CBCR:KLQF:7MEK:KJHO:2WNE:GNO4:L72A",
"kty":"EC",
"x":"39IKzok4T84nOsrOFTgbGCUnTOVjSTxevs-R1Z3JCz8",
"y":"jeVIXZcN9kLZSwcLsRhvNsBQ8kure3xhwze6922Snc4"
}

tips:还可以使用命令sudo dockerd --debug,它会显示出当前产生的错误,非常直观

知识总结

更改用户权限

1
2
3
sudo groupadd docker          #添加docker用户组
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组

这样再使用命令就不用加sudo

让容器在后台持续运行

创建容器时加入-d参数或者在进入容器时加入-d

进入指定容器

使用命令

1
docker exec -it 容器id或name /bin/bash

建议在创建容器时指定一个名字方便记忆

使用vscode远程连接容器

方法一

服务器端

与连接服务器一致,缺点时当你的ssh配置里同时有主机的配置和容器的配置,vscode会默认选择靠前设置的端口,远程连接主机和容器需要更改ssh配置文件

  1. 首先在创建容器时就为它指定一个端口,例如
1
docker run -it -p 8888:22 testimage

(以下操作均在容器内进行)

  1. 进入容器后下载openssh
1
2
apt-get update
apt-get install openssh-server
  1. 设置root密码
1
passwd
  1. 然后设置两遍相同的密码,之后登陆的时候要用到,之后修改配置文件
1
vim /etc/ssh/sshd_config
  1. 注释掉 PermitRootLogin prohibit-password 这一行 添加这一行 PermitRootLogin yes并重启ssh服务
1
2
3
service ssh restart
# 或使用
# /etc/init.d/ssh restart
  1. 在cmd上测试
1
ssh -p 8888 root@你的IP地址
  1. 设置免密登录(也适用于免密登录一个你没有root权限的服务器)

    • root目录下新建.ssh目录,并在其中创建authorized_keys文件,将本地机上的公钥拷贝进去

    • 然后赋予公钥文件权限,在.ssh文件夹下输入命令

      1
      chmod 755 authorized_keys

vscode端

与连接服务器操作相同

方法二

使用vscode连接到你的服务器或虚拟机,下载docker插件

之后重启就会发现在左边有一个标志,点击这个界面可以看到当前的所有镜像和容器

右键点击某个容器,选择Attach Visual Studio Code

之后会跳转新窗口,就和连接普通服务器一样了

缺点:启动时非常慢,而且要跳转两个窗口,很烦