Debian9离线安装docker

1. 前言

  • 在服务器禁止外网访问的情况下,无法通过apt-get install安装docker,使得docker安装变得异常曲折
    • 本地下载安装包,scp到服务器
    • 通过dpkg -i 手动安装,启动docker服务失败
    • … …
  • 各种坑,猛男也要落泪
  • apt-get install安装docker,推荐的参考文档:Debian中安装docker

2. 离线安装docker

2.1 检查系统信息,以下载对应的安装包

  • 执行如下命令,查看Linux系统版本(Debian or Redhat)、64 bit or 32 bit、amd or arm架构

    uname -a
    # 或者使用
    cat /proc/version
    
  • 从输出信息可以看出,服务器是Debian系统、amd64(amd架构、64bit)

    # uname -a的输出
    Linux n37-081-113 4.19.117.bsk.12-amd64 #4.19.117.bsk.12 SMP Debian 4.19.117.bsk.12 Thu Mar 17 16:41:16  x86_64 GNU/Linux
    
  • 不同的Debian版本使用的docker安装包有差异,因此需要了解Debian的具体版本 —— 这里是Debian 9,名字为 Stretch

    # debian系统可以直接使用该命令
    cat /etc/debian_version
    # 或使用如下2种命令皆可
    cat /etc/issue
    cat /etc/issue
    
  • Debian系统版本与code name之间的关系可以查看Debian官网:DebianReleases

  • 如何查看系统信息,可以参考:详解linux下查看系统版本号信息的方法(总结)

2.2 下载docker安装包

  • 综上,笔者最终可在如下地址下载docker的安装包:https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/
  • 安装docker需要下载3个安装包:containerd.io、docker-ce-cli、docker-ce,选择上述3个安装包的最新版本进行下载即可

2.3 安装docker

  • 在root用户下,进行docker安装

  • 依次安装上述三个安装包

    dpkg -i xxx.deb
    
  • 完成安装后,设置开机自启动、启动docker

    systemctl enable docker  && systemctl start docker
    
  • 离线安装参考文档: 国产化项目Debian系Linux离线安装docker

2.4 docker服务验证

  • 如未有任何报错,可以通过systemctl status docker.service查看是否为 active(running) 状态Debian9离线安装docker_第1张图片

  • 接着,通过如下命令检查docker服务是否ok

    docker info
    docker run hello-world
    

3. 错误问题集锦

3.1 A dependency job for docker.service failed. See ‘journalctl -xe’ for details.

  • 启动docker时,出现如下报错信息:

    A dependency job for docker.service failed. See 'journalctl -xe' for details.
    
  • 通过如下命令,查看docker启动失败的详情:

    journalctl -xeu docker.service
    # 或通过如下命令,会发现docker处于inactive状态
    systemctl status docker.service
    
  • 错误信息大致如下:

    systemd[1]: Job docker.service/start failed with result 'dependency'.
    systemd[1]: Dependency failed for Docker Application Container Engine.
    

3.1.1 对自己不太ok的方式

  • 查阅资料后,博客:Job docker.service/start failed with result ‘dependency’,给笔者启示:错误原因可能是还没创建docker用户组

  • 使用如下命令,创建docker用户组

    groupadd docker
    
  • 重启docker,仍然出现该错误,同时通过cat /etc/group可以发现已经成功添加docker用户

3.1.2 完美的解决方案

  • StackOverflow上的一个问答成功帮助我解决问题:Docker service fails to start due to dependency

  • 执行/usr/bin/dockerd -H unix://后,出现下面的错误:

    can't create unix socket /var/run/docker.sock: is a directory
    
  • 确认/var/run/docker.sock目录存在后,删除该目录(参考问答帖:Failed to load listeners: can’t create unix socket /var/run/docker.sock: is a directory )

    rm -fr /var/run/docker.sock
    
  • 再次执行/usr/bin/dockerd -H unix://,通过systemctl status docker.service查看docker状态,发现未active

  • ctrl + C取消执行后,就可以通过systemctl start docker启动docker服务了

你可能感兴趣的:(K8S,docker,容器)