Linux 离线部署 Docker 18.06.3 终极指南(附一键安装卸载脚本)

news2025/4/21 20:53:04

Linux 离线部署 Docker 18.06.3 终极指南(附一键安装/卸载脚本)

摘要:本文针对无外网环境的 Linux 服务器,提供基于二进制包的 Docker 18.06.3 离线安装全流程指南。包含自动化脚本设计服务配置优化安全卸载方案,解决企业内网、隔离环境下的容器化部署难题。

一、离线安装原理与准备

1.1 方案优势分析

  • 无需网络:基于静态二进制包(.tgz)脱离在线依赖
  • 快速部署:通过 Shell 脚本实现一键安装/卸载
  • 版本可控:锁定 Docker 18.06.3 稳定版,避免兼容性问题

1.2 环境要求

项目最低要求
操作系统CentOS 7+/Ubuntu 16+
内核版本≥ 3.10(推荐 4.x)
系统架构x86_64
磁盘空间≥ 500MB

二、离线安装全流程实战

2.1 获取安装包

从官方仓库下载对应版本(直达链接):

# 文件名称
docker-18.06.3-ce.tgz

2.2 上传文件到服务器

通过 SCP/U盘/内网传输将以下文件上传至目标服务器:

  • docker-18.06.3-ce.tgz
  • docker.service(系统服务文件)
  • install.sh(安装脚本)

2.3 脚本解析与执行

安装脚本 install.sh
#!/bin/sh

echo '解压tar包'
tar -xvf docker-18.06.3-ce.tgz

echo '将docker目录下所有文件复制到/usr/bin目录'
cp docker/* /usr/bin

echo '将docker.service 复制到/etc/systemd/system/目录'
cp docker.service /etc/systemd/system/

echo '添加文件可执行权限'
chmod +x /etc/systemd/system/docker.service

echo '重新加载配置文件'
systemctl daemon-reload

echo '启动docker'
systemctl start docker

echo '设置开机自启'
systemctl enable docker.service

echo '======= 安装完成 ======='
docker -v
服务文件 docker.service
[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
TimeoutSec=0
RestartSec=2
Restart=always

[Install]
WantedBy=default.target
执行安装
# 授权并执行
chmod +x install.sh docker.service
./install.sh

预期输出

Docker version 18.06.3-ce, build d7080c1

三、安装后验证与调优

3.1 基础功能测试

# 查看服务状态
systemctl status docker

# 运行测试容器
docker run --rm hello-world

成功输出 Hello from Docker! 表示安装正确。

3.2 安全加固配置(可选)

编辑 /etc/docker/daemon.json

{
  "userns-remap": "default",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "live-restore": true
}

重启服务生效:

systemctl restart docker

四、彻底卸载 Docker

4.1 卸载脚本 uninstall.sh

#!/bin/sh

echo '停止docker服务'
systemctl stop docker

echo '删除docker.service'
rm -f /etc/systemd/system/docker.service

echo '删除二进制文件'
rm -rf /usr/bin/docker* /usr/bin/containerd* /usr/bin/runc

echo '清理数据目录(谨慎操作!)'
rm -rf /var/lib/docker

echo '重新加载systemd'
systemctl daemon-reload

echo '======= 卸载完成 ======='

4.2 执行卸载

chmod +x uninstall.sh
./uninstall.sh

五、常见问题与解决方案

Q1:安装后 docker ps 无权限

报错Got permission denied while trying to connect to the Docker daemon socket
解决

sudo usermod -aG docker $USER && newgrp docker

Q2:服务启动失败

排查命令

journalctl -u docker.service --since "10 minutes ago"

Q3:镜像存储路径更改

编辑 /etc/docker/daemon.json

{
  "data-root": "/new/path/to/docker"
}

六、性能优化建议

  1. 存储驱动选择

    # 查看当前驱动
    docker info | grep "Storage Driver"
    
    • 推荐:overlay2(需内核≥4.x)
  • 旧版系统:devicemapper
  1. 日志轮转配置
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "3"
      }
    }
    

扩展工具推荐:Portainer 可视化容器管理工具

如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解密码学知识,请订阅《密码学实战》专栏 → 密码学实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ALSA架构学习2(驱动MAX98357A)

1 前言和环境 之前其实写过两篇,一篇是讲ALSA,一篇是I2S。 ALSA架构学习1(框架)_alsa框架学习-CSDN博客 总线学习5--I2S_max98357接喇叭教程-CSDN博客 在ALSA那篇的结尾,也提了几个小练习。比如: ### 4…

数据结构*集合框架顺序表-ArrayList

集合框架 常见的集合框架 什么是顺序表 顺序表是一种线性表数据结构,它借助一组连续的存储单元来依次存储线性表中的数据元素。一般情况下采用数组存储。 在数组上完成数据的增删查改。 自定义简易版的顺序表 代码展示: public interface IArray…

VMware Workstation 保姆级 Linux(CentOS) 创建教程(附 iso)

文章目录 一、下载二、创建 一、下载 CentOS-7.9-x86_64-DVD-2009.iso 二、创建 VMware Workstation 保姆级安装教程(附安装包) VMware Workstation 保姆级安装教程(附安装包) VMware Workstation 保姆级安装教程(附安装包)

软考-信息系统项目管理师-2 信息技术发展

总结思维导图 云计算(掌握) (3)多租户和访问控制管理访问控制管理是云计算应用的核心问题之一云计算访问控制的研究主要集中在云计算访问控制模型、基于ABE密码体制的云计算访问控制、云中多租户及虚拟化访问控制研究云中多租户及虚拟化访问控制是云计算的典型特征。 大数据(…

Spring Boot JPA 开发之Not an entity血案

项目状况介绍 项目环境 JDK 21Spring Boot 3.4.3Hibernate: 6.6.13.Final项目描述 因为是微服务架构,项目层级如下 project-parent project-com project-A … project-X 其中: project-parent定义依赖库的版本project-com 定义了一些公用的方法和配置,包括持久层的配置。…

HTMLCSS实现轮播图效果

这段代码实现了一个具有自动轮播、手动切换功能的图片轮播图,并且配有指示器(小圆点)来显示当前图片位置。轮播图可通过左右箭头按钮进行手动切换,也能自动定时切换,当鼠标悬停在轮播图上时,自动轮播会暂停…

嵌入式学习——opencv图像库编程

环境配置 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和图像处理库,广泛用于各种计算机视觉任务,如图像处理、视频分析、人脸识别、物体检测、机器学习等。它提供了丰富的函数和工具,用于处理…

【每日八股】复习 MySQL Day1:事务

文章目录 复习 MySQL Day1:事务MySQL 事务的四大特性?并发事务会出现什么问题?MySQL 事务的隔离级别?不同事务隔离级别下会发生什么问题?MVCC 的实现原理?核心数据结构版本链构建示例可见性判断算法MVCC 可…

外接键盘与笔记本命令键键位不同解决方案(MacOS)

文章目录 修改键位第一步:打开设置第二步:进入键盘快捷键第三步:修改修饰键设置第四步:调整键位第五步:保存设置tips ikbc c87键盘win键盘没反应的解决亲测的方法这是百度的答案标题常规组合键尝试‌:型号差…

kotlin知识体系(五) :Android 协程全解析,从作用域到异常处理的全面指南

1. 什么是协程 协程(Coroutine)是轻量级的线程,支持挂起和恢复,从而避免阻塞线程。 2. 协程的优势 协程通过结构化并发和简洁的语法,显著提升了异步编程的效率与代码质量。 2.1 资源占用低(一个线程可运行多个协程)…

vscode stm32 variable uint32_t is not a type name 问题修复

问题 在使用vscodekeil开发stm32程序时,发现有时候vscode的自动补全功能失效,且problem窗口一直在报错。variable “uint32_t” is not a type name uint32_t 定义位置 uint32_t 实际是在D:/Keil_v5/ARM/ARMCC/include/stdint.h中定义的。将D:/Keil_v5…

Formality:Bug记录

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文记录博主在使用Synopsys的形式验证工具Formality中遇到的一个Bug。 Bug复现 情况一 // 例1 module dff (input clk, input d_in, output d_out …

【java+Mysql】学生信息管理系统

学生信息管理系统是一种用于管理学生信息的软件系统,旨在提高学校管理效率和服务质量。本课程设计报告旨在介绍设计和实现学生信息管理系统的过程。报告首先分析了系统的需求,包括学生基本信息管理、成绩管理等功能。接着介绍了系统的设计方案&#xff0…

小白从0学习网站搭建的关键事项和避坑指南(2)

以下是针对小白从零学习网站搭建的 进阶注意事项和避坑指南(第二期),覆盖开发中的高阶技巧、常见陷阱及解决方案,帮助你在实战中提升效率和质量: 一、进阶技术选型避坑 1. 前端框架选择 误区:盲目追求最新…

Windows 10 上安装 Spring Boot CLI详细步骤

在 Windows 10 上安装 Spring Boot CLI 可以通过以下几种方式完成。以下是详细的步骤说明: 1. 手动安装(推荐) 步骤 1:下载 Spring Boot CLI 访问 Spring Boot CLI 官方发布页面。下载最新版本的 .zip 文件(例如 sp…

vue2技术练习-开发了一个宠物相关的前端静态商城网站-宠物商城网站

为了尽快学习掌握相关的前端技术,最近又实用 vue2做了一个宠物行业的前端静态网站商城。还是先给大家看一下相关的网站效果: 所以大家如果想快速的学习或者掌握一门编程语言,最好的方案就是通过学习了基础编程知识后,就开始利用…

嵌入式学习——远程终端登录和桌面访问

目录 通过桥接模式连接虚拟机和Windows系统 1、桥接模式 2、虚拟机和Windows连接(1) 3、虚拟机和Windows连接(2) 在Linux虚拟机中创建新用户 Windows系统环境下对Linux系统虚拟机操作 远程登录虚拟机(1&#xff…

如何新建一个空分支(不继承 master 或任何提交)

一、需求分析: 在 Git 中,我们通常通过 git branch 来新建分支,这些分支默认都会继承当前所在分支的提交记录。但有时候我们希望新建一个“完全干净”的分支 —— 没有任何提交,不继承 master 或任何已有内容,这该怎么…

Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门

一、前言 在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如…

[第十六届蓝桥杯 JavaB 组] 真题 + 经验分享

A:逃离高塔(AC) 这题就是简单的签到题,按照题意枚举即可。需要注意的是不要忘记用long,用int的话会爆。 📖 代码示例: import java.io.*; import java.util.*; public class Main {public static PrintWriter pr ne…