学习笔记—离线环境下安装Docker

离线环境下安装Docker

  离线场景下配置服务器是一个少见的情况,但有些地方出于安全等考虑服务器并不会接外网,因此,离线部署一些软件是很有意义的。

  首先需要下载一个合适的docker离线的tgz包,以docker-24.0.9.tgz为例子。

  当传上服务器后,解压。

1
tar -zxvf docker-24.0.9.tgz

  解压后找到docker目录,将docker二进制文件复制到/usr/bin目录下。

1
cp docker/* /usr/bin/

  创建docker的systemd服务文件,以docker.service为例子。

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
[Unit]
Description=Docker Application
Documentation=http://docs.dock.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

  以上是一个systemd服务单元文件,用于在基于systemd的linux系统上配置和管理Docker服务。

  Unit中,Description: 描述服务的作用,这里是 “Docker Application”,表示这是用于运行 Docker 应用程序的服务。ocumentation: 提供服务的文档链接,这里是 Docker 的官方文档链接。After: 指定该服务在哪些服务启动之后启动。这里指定了 network-online.target 和 firewalld.service,意味着 Docker 服务会在网络在线和防火墙服务启动之后启动。Wants: 表示该服务希望某个服务启动,但不严格要求它。这里指定了 network-online.target,意味着 Docker 服务希望网络服务在线,但不是严格依赖。

  Service中,Type: 定义服务启动类型。notify 表示服务会发送一个通知信号来告知 systemd 它已经启动完成。ExecStart: 指定启动服务时要执行的命令。这里是 /usr/bin/dockerd,即启动 Docker 守护进程。ExecReload: 指定重新加载服务配置时要执行的命令。这里是发送 HUP 信号给主进程。LimitNOFILE: 设置服务可以打开的最大文件数,infinity 表示没有限制。LimitNPROC: 设置服务可以创建的最大进程数,infinity 表示没有限制。LimitCORE: 设置服务可以创建的最大核心转储文件大小,infinity 表示没有限制。TimeoutStartSec: 定义启动服务时的超时时间,0 表示没有超时限制。Delegate: 表示将服务管理委派给 Docker 守护进程,让 Docker 管理其子进程。KillMode: 定义如何杀死服务。process 表示只杀死主进程,不杀死其子进程。Restart: 定义服务失败时的重启策略。on-failure 表示只有在服务非正常退出时才重启。StartLimitBurst: 设置在 StartLimitInterval 时间内允许的最大启动次数。StartLimitInterval: 设置启动次数限制的时间间隔。

  Install中,WantedBy: 指定该服务属于哪个目标。multi-user.target 表示该服务应该在多用户系统环境中启动。

  这样的一个服务单元配置文件配置了Docker服务的基本行为,比如启动命令、重启策略、依赖关系等等,使得Docker服务能够被systemd正确地管理和启动。

  紧接着,首先,给Docker的服务单元文件增加执行权限,让systemd能通过执行这个文件来启动Docker服务。

1
chmod +x /etc/systemd/system/docker.service

  daemon-reload用于告诉systemd重新加载所有服务单元文件。确保systemd用最新的配置

1
systemctl daemon-reload

  启动docker服务。

1
systemctl start docker

  将 Docker 服务设置为在系统启动时自动启动。

1
systemctl enable docker.service

  这样,Docker就被离线安装好了。

  安装完成后,可以通过以下命令来验证 Docker 是否安装成功:

1
docker --version

  如果 Docker 安装成功,该命令将输出 Docker 的版本信息。

  如果 Docker 安装失败,可以尝试重新安装 Docker,或者查看 Docker 的日志文件(通常位于 /var/log/docker.log)以获取更多错误信息。

离线环境下安装docker-compose

  Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务,并使用一个命令来启动所有服务。

  在离线环境下安装 Docker Compose,需要先下载 Docker Compose 的二进制文件,然后将其复制到系统的 PATH 中。

  首先,需要从 Docker 官方网站下载 Docker Compose 的二进制文件。可以在浏览器中打开以下链接:

1
https://github.com/docker/compose/releases

  在页面中找到适合你操作系统的 Docker Compose 版本,并下载对应的二进制文件。以docker-compose-linux-x86_64为例。

1
mv docker-compose-linux-x86_64 /usr/bin/docker-compose

  先移动至系统可执行目录

1
chmod +x /usr/bin/docker-compose

  赋予执行权限

  安装完成后,可以通过以下命令来验证 Docker Compose 是否安装成功:

1
docker-compose -v

  如果 Docker Compose 安装成功,该命令将输出 Docker Compose 的版本信息。


学习笔记—离线环境下安装Docker
https://gagaducko.github.io/2024/09/11/学习笔记—离线环境下安装Docker/
作者
gagaduck
发布于
2024年9月11日
许可协议