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

2.2 下载docker安装包

2.3 安装docker

  • 在root用户下,进行docker安装
  • 依次安装上述三个安装包
dpkg -i xxx.deb
  • 完成安装后,设置开机自启动、启动docker
systemctl enable docker  && systemctl start docker

2.4 docker服务验证

  • 如未有任何报错,可以通过systemctl status docker.service查看是否为 active(running) 状态
  • debian 离线安装jenkins debian 离线安装中文_docker

  • 接着,通过如下命令检查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的方式

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

3.1.2 完美的解决方案

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服务了