手把手教你内网环境搞掂 Docker 离线安装!附镜像导入全流程✨

兄弟们,今天来聊个内网开发的 “刚需” 技能 ——Docker 离线安装 + 镜像导入

上周帮客户搭环境时踩了大雷:服务器连不上网,想装 Docker 搞容器化部署,结果yum install直接报错,在线拉镜像更是想都别想😤 但作为资深 “填坑选手”,这点小问题怎么能难倒我?

一、先搞到 Docker 安装包🚀

内网没网没关系,咱先在能上网的电脑下载好安装包!

👉 下载地址记好:https://download.docker.com/linux/static/stable/x86_64/

我下的是docker-19.03.6.tgz,才 60M 左右,比王者荣耀安装包小多了🌚

二、服务器上安装 Docker 全流程💻

1. 上传并解压安装包

把下载好的 tgz 文件丢到服务器上,比如丢到/root目录,然后敲命令解压:

1
tar -xvf docker-19.03.6.tgz

解压后会得到一个docker文件夹,里面都是 Docker 的执行文件~

2. 把文件丢到系统目录

1
cp docker/\* /usr/bin/

这一步相当于把 Docker 的 “武器” 放到系统的 “军火库” 里,之后就能直接调用啦!

3. 配置 Docker 服务

需要创建一个服务配置文件,让系统知道怎么启动 Docker:

1
vim /etc/systemd/system/docker.service

然后把下面的内容复制进去(手敲容易错,建议直接复制!):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

4. 启动 Docker 服务

配置好后,给文件加个执行权限,然后启动服务:

1
2
3
4
5
chmod +x /etc/systemd/system/docker.service

systemctl daemon-reload # 刷新配置
systemctl start docker # 启动Docker
systemctl enable docker.service # 设置开机自启

看到没报错基本就稳了!可以用下面的命令检查是否安装成功:

1
2
systemctl status docker  # 看状态
docker -v # 看版本

如果看到 Docker 的版本号,恭喜你,安装成功~

三、内网环境怎么搞到镜像?📦

重点来了!内网不能docker pull,但我们可以 “曲线救国”:

1. 在有网的机器上拉取镜像

找一台能上网的电脑,先把需要的镜像拉下来,比如拉个 Java 8 的镜像:

1
docker pull java:8

2. 导出镜像为 tar 文件

1
docker save java:8 -o java.tar

这一步就像把镜像 “打包快递”,生成一个 tar 包~

3. 把 tar 包传到内网服务器

用 U 盘、移动硬盘或者内网文件传输工具都行,传到服务器后,用下面的命令导入:

1
docker load -i java.tar

4. 检查镜像是否导入成功

1
docker images

看到镜像列表里有你导入的镜像,就大功告成啦!

最后总结一波💡

内网安装 Docker 的核心就是:先在有网环境准备好安装包和镜像,再传到内网服务器。整个过程其实不难,就是步骤稍微多一点,但跟着教程一步步来绝对没问题~

下次遇到内网环境部署项目,记得用这招!觉得有用的话,点个赞和在看,转发给身边搞开发的兄弟,让大家都少踩坑😎

(PS:如果导入镜像时遇到问题,可能是权限问题或者文件路径不对,记得检查一下哦~)