Linux 离线安装Docker(脚本自动安装)

在这里插入图片描述

文章目录

    • 1. 准备docker离线包
    • 2. 准备docker.service 系统配置文件
    • 3. 准备安装脚本和卸载脚本
    • 4. 安装
    • 5、docker存储

前言

关于服务器不能联网的情况,这样就没法用yum安装软件,docker也是如此;或者由于CentOS系统采用Yum 安装过程中很慢,不换镜像源的情况下

1. 准备docker离线包

docker官方离线包下载地址 - https://download.docker.com/linux/static/stable/x86_64/
下载需要安装的docker版本,我此次下载的是
docker-20.10.9.tgz 版本

2. 准备docker.service 系统配置文件

docker.service

--- Linux都可以用-----
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target


----- Ubuntu 默认配置- apt install docker.io 安装 -------
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
Wants=containerd.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target

3. 准备安装脚本和卸载脚本

安装脚本 install.sh

默认路径:
/usr/lib/systemd/system/docker.service

手动安装建议也用这个路径,方便查看

vim install.sh

#!/bin/sh
echo '解压tar包...'
tar -xvf $1

echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/

echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /usr/lib/systemd/system/

echo '添加文件权限...'
chmod +x /usr/lib/systemd/system/docker.service

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

echo '启动docker...'
systemctl start docker

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

echo 'docker安装成功...'
docker -v

卸载脚本 uninstall.sh

vim uninstall.sh


#!/bin/sh

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

echo '删除docker文件...'
rm -rf /usr/bin/docker*

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

echo '卸载成功...'


4. 安装

4.1、此时目录为:(只需要关注docker-20.10.9.tgz、docker.service、install.sh、uninstall.sh即可)

4.2、执行脚本 sh install.sh docker-20.10.9.tgz

待脚本执行完毕后,执行docker -v

发现此时docker已安装成功,可以用docker --help

查看docker命令,从现在开始你就可以自己安装image和container了

4.3 如果你想卸载docker,此时执行脚本 sh uninstall.sh即可,执行过程如下:

此时输入docker -v,发现docker已经卸载

5、docker存储

重新安装Ddocker,镜像内容不会丢失,内容在:/var/lib/docker中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBootAdmin邮件通知

在上一篇中我们学习到了 Admin Service Clustering 分布式缓存配置 ,这一篇我们来学习,客户端离线,出现故障的时候,我们这么能及时知道呢,发现邮件通知也许是最简单的方式了! 邮件通知 邮件通知将作为使用…

​在 Linux ​中管理用户

在 Linux 系统中,用户是系统资源的主要使用者,每个用户都有一个唯一的标识符(用户ID)。为了更好地组织和管理用户,Linux 还引入了用户组的概念。用户组是用户的集合,有助于更有效地分配权限和资源。 用户是…

LabVIEW工业机器人系统

介绍了ABB工业机器人与LabVIEW之间进行数据交互的解决方案。通过使用TCP/IP协议的socket通信,实现了机器人坐标数据的读取,为人机交互提供了一个更便捷、更高效的新思路。 系统主要由ABB工业机器人、基于TCP/IP协议的通信接口和LabVIEW软件组成。工业机…

Excel:将截面数据转换成面板数据

原始截面数据如下: 步骤:数据——自表格/区域 点击确定,出现下图: 然后,在这个界面选择:“转换”——“逆透视列”下选择逆透视其他列。会出现面板数据形式。 然后,点击“主页”——关闭并上载即…

day16打卡

day16打卡 104. 二叉树的最大深度 递归法时间复杂度:O(N),空间复杂度:O(N) class Solution { public:int maxDepth(TreeNode* root) {if(root nullptr) return 0;return 1 max(maxDepth(root->left), maxDepth(root->right));} };…

Android Settings 显示电池点亮百分比

如题,Android 原生 Settings 里有个 电池电量百分比 的选项,打开后电池电量百分比会显示在状态栏。 基于 Android 13 , 代码在 ./packages/apps/Settings/src/com/android/settings/display/BatteryPercentagePreferenceController.java &am…

springboot125汽车资讯网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的125汽车资讯网站 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获…

[AIGC 大数据基础] 浅谈hdfs

HDFS介绍 什么是HDFS? HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统的一部分,是一个分布式文件系统。它被设计用于存储和处理大规模数据集,并且能够容错、高可靠和高性能地处理文件。 HDFS是为了支…

逻辑回归中的损失函数梯度下降

一、引言 逻辑回归中的损失函数通常采用的是交叉熵损失函数(cross-entropy loss function)。在逻辑回归中,我们通常使用sigmoid函数将线性模型的输出转换为概率值,然后将这些概率值与实际标签进行比较,从而计算损失。 …

创建第一个 Spring 项目(IDEA社区版)

文章目录 创建 Spring 项目创建一个普通的 Maven 项目添加 Spring 依赖IDEA更换国内源 运行第一个 Spring 项目新建启动类存储 Bean 对象将Bean注册到Spring 获取并使用 Bean 对象 创建 Spring 项目 创建一个普通的 Maven 项目 首先创建一个普通的 Maven 项目 添加 Spring 依…

web项目开发的基本过程

一、背景 web项目开发基本过程一般由需求分析,概要设计,详细设计,数据库设计,编码,测试,发布上线这几个过程。这就是经典的瀑布模型。但是随着系统的复杂度越来越高,团队人员技术栈分工越来越小…

《WebKit技术内幕》学习之十三(3):移动WebKit

3 其他机制 3.1 新渲染机制 为了移动领域更好的用户体验,渲染机制所做的改进主要是提升渲染性能来增加响应的速度,甚至不惜牺牲一些跟规范定义的行为不一致的地方。在这一小节中主要介绍三个方面的技术,其一是Tiled Backing Store&#x…

Wpf 使用 Prism 实战开发Day14

备忘录接口增删(CURD)改查实现 一.添加备忘录控制器(MemoController) 备忘录控制器(MemoController)和待办事项控制器 (ToDoController)功能实现差不多一样。基本套路就是&#xff1…

结构化文本编程语言:ST语言

ST语言通常指的是结构化文本(Structured Text),是一种用于工业自动化和过程控制领域的编程语言。它被广泛应用于PLC(可编程逻辑控制器)和工业控制系统中,用于编写控制逻辑、数据采集和设备通信等任务。 ST语…

Qt5编译qextserialport(Qt5.14.2+VS2017)

1、qextserialport库下载 (1)github GitHub - qextserialport/qextserialport: Automatically exported from code.google.com/p/qextserialport (2) code.google https://code.google.com/archive/p/qextserialport/downloads 我下载的是最新版qextserialport-1.2rc.zip ​…

【踩坑日常】mysql查询错误排查

背景 在生产上发现一个接口数据怎么查都为空,做的日志记录,sql语句以及参数手动执行却能返回结果 排查 刚发现问题的时候,第一时间是通过日志去查看问题,模拟下核心点就如下 2024-01-24 14:10:03,912 DEBUG selectSQL:137 - >…

Vp9解码方式概述 -- Parsing Process

Vp9解码方式概述 – Parsing Process 本文是对vp9协议第9章,解析字符串函数的一个梳理,主要对几种解析类型(Type)的流程进行梳理 目录 Vp9解码方式概述 -- Parsing Process1. 如何解码视频?2. f(n)3. 布尔解码器Boole…

核心类库ArrayList、hashMap等

八. 核心类库 1. ArrayList 数组缺点 ArrayList,它常常被用来替代数组 数组的缺点:不能自动扩容,比如已经创建了大小为 5 的数组,再想放入一个元素,就放不下了,需要创建更大的数组,还得把旧…

基于 MQTT 的开源桥接器:自由控制物联网设备 | 开源日报 No.151

Koenkk/zigbee2mqtt Stars: 10.5k License: GPL-3.0 Zigbee2MQTT 是一个 Zigbee 🐝 到 MQTT 桥接器 🌉,可以摆脱专有的 Zigbee 桥接器 🔨 允许您在不使用供应商桥接器或网关的情况下使用 Zigbee 设备通过 MQTT 桥接事件并控制 Z…

Salesforce Lightning 的 Close Case 按钮无法批量关闭 Case 的原因和解决方法

为 Lightning 页面添加了自定义的 Close Case 按钮(方法可参考:https://www.simplysfdc.com/2021/01/salesforce-mass-close-case.html)后,可能会出现无法批量关闭 Case 的情况。 选中多个 Case,再点击 Close Case 按…