Debian10离线安装docker-20.10.13

以下操作都是使用root用户

下载、上传、解压和移动到执行目录

1.到官方下载页面,找到对应硬件平台的docker-20.10.13.tgz 下载,并上传到debian系统上。我选择的是x86_64的。
2.解压并移动到执行目录上

tar xzvf docker-20.10.13.tgz
sudo cp docker/* /usr/bin/

3.创建deaemon.json配置文件
无法联网,需要docker连接内网镜像库
新建 /etc/docker文件夹
新建 /etc/docker/daemon.json 文件,并添加内容

{  
  "insecure-registries": [
    "192.168.1.230:8000"   
  ],
  "log-driver":"json-file",
  "log-opts": {"max-size":"2g", "max-file":"3"}
}

自启动配置

1.创建 /usr/lib/systemd/system/docker.service

nano /usr/lib/systemd/system/docker.service

复制以下内容

[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 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

2.创建/usr/lib/systemd/system/docker.socket

nano /usr/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

3.创建 /usr/lib/systemd/system/containerd.service

nano /usr/lib/systemd/system/containerd.service
# Copyright The containerd Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

  1. 赋权限
chmod +x /usr/lib/systemd/system/docker.socket
chmod +x /usr/lib/systemd/system/docker.service
chmod +x /usr/lib/systemd/system/containerd.service
  1. 创建docker组
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker 

最好重启一下系统
6. 启动docker,并开启开机自启动

systemctl daemon-reload
systemctl start docker
systemctl enable docker

7.查看状态

systemctl status docker

返回结果

docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2022-08-09 12:02:52 CST; 1h 19min ago
     Docs: https://docs.docker.com
 Main PID: 899 (dockerd)
    Tasks: 8
   Memory: 81.8M
   CGroup: /system.slice/docker.service
           └─899 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

到此安装完成

<think>好的,我现在需要帮用户在Linux系统下离线安装Docker 28.0.4版本,并且要处理依赖项和具体步骤。首先,用户提到使用KubeKey支持的操作系统,比如Ubuntu、Debian等,所以可能需要考虑这些系统的依赖包。 首先,Docker离线安装通常需要下载几个主要组件:Docker Engine、CLI、Containerd等。但Docker官方并没有直接提供特定版本的离线包,可能需要手动下载deb或rpm包。用户指定的是28.0.4版本,但根据Docker的发布历史,可能这个版本号是否准确?比如,Docker Engine的版本通常是20.10.x这样的,28.0.4可能不存在。这里可能存在版本号误解,需要确认。比如,Docker CLI和Engine的版本可能不同,或者用户可能指的是其他组件? 假设用户确实需要28.0.4,可能需要检查Docker的官方仓库是否有对应的包。比如,在https://download.docker.com/linux/ 下查看各个发行版的目录。例如,对于Ubuntu,可以找到pool/stable/下的amd64/目录,查找具体的deb包。 步骤可能包括: 1. 在有网络的环境下载所有需要的deb/rpm包及其依赖。 2. 将包转移到目标机器。 3. 使用dpkg或rpm安装这些包,并按顺序解决依赖。 但依赖项的处理比较麻烦,特别是离线环境下。可能需要使用apt-offline或创建本地仓库。例如,在Debian/Ubuntu系统上,可以使用dpkg -i安装所有下载的deb包,但如果缺少依赖,安装会失败。这时候需要提前下载所有依赖包。 另外,用户提到的KubeKey支持的系统中,比如ubuntu-22.04,可能需要确认该系统的架构,如amd64或arm64。假设用户使用的是amd64架构。 所以具体步骤可能如下: 1. 在有网络的机器上下载Docker 28.0.4的所有deb包及其依赖项。可能需要使用apt-get download命令,或者使用docker.com的仓库直接下载。 但这里问题在于,Docker的版本命名可能不同。比如,Docker CE的版本号结构是20.10.x,所以用户可能混淆了版本号。比如,28.0.4可能不存在,或者属于另一个组件。需要用户确认版本是否正确。假设用户确实需要某个特定版本,可能需要查找正确的包名。 例如,检查Docker的发布页面,发现最新的稳定版是24.0.7,所以可能用户提供的版本有误。这时候需要提示用户确认版本是否存在,或者是否有笔误。但用户可能坚持这个版本,所以需要进一步处理。 或者,可能用户指的是Docker CE 28.0.4,但可能实际不存在。这时可能需要建议用户检查版本号,或者寻找替代方案。但问题要求安装指定版本,所以可能需要假设用户是正确的,并继续。 另一个可能性是用户误将Kubernetes或其他工具的版本号当成了Docker的版本。例如,Docker通常不会出现28.0.4这样的版本,而Kubernetes可能有这样的版本,但不确定。 假设用户确实需要28.0.4,可能需要通过源码编译,但这比较复杂。或者可能用户指的是Docker的某个内部组件版本? 如果无论如何都要按照用户提供的版本来处理,可能需要先尝试寻找是否存在该版本的离线包。 比如,访问https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/ 查看可用的包。假设Ubuntu 22.04(jammy)为例,查看里面的包。例如,docker-ce_28.0.4_3-0_ubuntu-jammy_amd64.deb是否存在? 假设不存在,可能需要用户调整版本。或者可能用户指的是28.0.4的cli工具?这时候需要更多的信息。 但根据用户的问题,必须回答如何安装该版本,所以可能需要假设该版本存在,或者用户可能从其他来源获取了包。 如果无法找到官方包,可能需要用户自行下载或构建,但这对用户来说可能困难。 综上,可能的步骤为: 1. 在有网络的机器上下载Docker 28.0.4的deb/rpm包及其依赖。 - 使用apt-get download或者yumdownloader。 - 或者手动从Docker仓库下载。 2. 传输这些包到目标机器。 3. 安装这些包,处理依赖顺序。 例如,对于Ubuntu/Debian系统: a. 添加Docker的仓库,但因为是离线环境,可能需要提前下载所有需要的包。或者使用另一台在线机器模拟下载。 b. 使用以下命令下载所有依赖: sudo apt-get install -y --download-only docker-ce=28.0.4 docker-ce-cli=28.0.4 containerd.io 但需要确认版本是否存在。如果不存在,apt会报错。 假设用户提供的版本存在,则可以将所有deb包下载到某个目录,然后复制到离线机器安装。 之后,在离线机器上使用dpkg -i *.deb安装,但需要注意依赖顺序,可能需要先安装依赖包,如containerd.io、docker-ce-cli,再安装docker-ce。 如果依赖项不全,安装会失败,这时候需要手动补全所有依赖包。 此外,还需要配置docker服务,并添加用户到docker组。 但问题在于,用户指定的版本可能不存在,所以步骤可能无法完成。这时候可能需要指出版本不存在,并建议用户检查版本号,或者提供可用的版本。 但根据用户的问题,必须按照指定版本来回答,因此可能需要假设该版本存在,或者用户已获取正确的包。 另外,用户提到的KubeKey支持的系统,如debian11,可能需要不同的包,步骤类似,但需要对应发行版的包。 综上,回答的步骤可能包括: 1. 准备在线环境下载包: 创建下载目录,使用apt或yum下载所有需要的包。 例如,对于Ubuntu: sudo mkdir -p /opt/docker-offline cd /opt/docker-offline sudo apt-get download docker-ce=28.0.4 docker-ce-cli=28.0.4 containerd.io docker-buildx-plugin docker-compose-plugin 但需要确认版本是否存在。 2. 将整个目录打包,复制到离线机器。 3.离线机器上安装: sudo dpkg -i /path/to/*.deb 4. 处理依赖问题,可能需要手动安装其他依赖包,例如libseccomp2等。 5. 配置docker服务: sudo systemctl enable docker --now 6. 验证安装docker version。 但关键问题是Docker 28.0.4是否存在。根据Docker的发布历史,目前最新的Docker CE版本是24.0.7(截至2023年10月),所以28.0.4可能不存在。这时候需要提示用户版本错误。 但用户可能输入错误,比如应该是20.10.4或者其他版本。所以回答中可能需要指出这一点,并建议用户检查版本号,或者调整步骤以适用于存在的版本。 但按照用户的问题,必须假设版本正确,因此可能在步骤中遇到困难,这时候需要说明如何寻找正确的包,或者建议用户参考官方文档。 综上,可能需要在回答中说明Docker版本的问题,并给出一般步骤,同时指出可能需要调整版本号。</think>### Linux系统下Docker 28.0.4离线安装步骤 #### 一、环境准备 1. **确认系统兼容性** Docker官方支持的Linux发行版包括Ubuntu、Debian、CentOS等[^1]。需确保目标系统为以下版本之一: - Ubuntu 18.04/20.04/22.04 - Debian 10/11 - CentOS 7(需已安装`yum-utils`) 2. **依赖项检查** 离线安装需提前下载以下核心组件: - Docker Engine(`docker-ce`) - Docker CLI(`docker-ce-cli`) - Containerd(`containerd.io`) - 系统依赖包(如`libseccomp2`、`iptables`等) --- #### 二、离线安装步骤(以Ubuntu 22.04为例) 1. **在线环境下载离线包** 在可联网的机器上执行以下操作: ```bash # 创建下载目录 mkdir docker-offline && cd docker-offline # 添加Docker官方GPG密钥(需临时联网) curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 下载指定版本Docker包及其依赖 apt-get download \ docker-ce=5:28.0.4-1~ubuntu.22.04~jammy \ docker-ce-cli=5:28.0.4-1~ubuntu.22.04~jammy \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin ``` > **注意**:Docker版本号格式为`5:[VERSION]`,若提示版本不存在,请通过[官方仓库](https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/)确认可用版本。 2. **传输文件到离线机器** 将`docker-offline`目录打包并复制到目标机器: ```bash tar czvf docker-offline.tar.gz docker-offline scp docker-offline.tar.gz user@offline-host:/tmp ``` 3. **离线安装** 在目标机器上执行: ```bash # 解压文件 cd /tmp && tar xzvf docker-offline.tar.gz # 安装所有包(需root权限) sudo dpkg -i /tmp/docker-offline/*.deb # 修复依赖问题(如有) sudo apt-get install -f -y ``` 4. **配置与验证** ```bash # 启动Docker服务 sudo systemctl enable docker --now # 验证安装 docker version --format 'Client: {{.Client.Version}}\nServer: {{.Server.Version}}' ``` 若输出包含`28.0.4`,则安装成功。 --- #### 三、依赖项说明 - **关键依赖包**: 若安装过程中提示缺少依赖项(如`libseccomp2`),需在在线环境中通过`apt-get download <package>`下载对应版本,并重复传输和安装步骤。 - **兼容性处理**: 对于CentOS系统,需使用`yumdownloader`工具下载RPM包,命令为: ```bash yum install yum-utils -y yumdownloader --resolve docker-ce-28.0.4 ``` --- #### 四、常见问题 1. **版本不存在错误** Docker CE版本命名规则为`20.10.x`,28.0.4可能不存在。建议通过以下命令查看可用版本: ```bash apt-cache madison docker-ce ``` 2. **依赖冲突** 若系统已安装旧版Docker,需先卸载: ```bash sudo apt-get remove docker docker-engine docker.io containerd runc ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值