搜索
首页运维Docker离线安装docker启动失败

离线安装docker启动失败

Apr 25, 2023 am 09:02 AM

在当前云计算和容器化的浪潮下,Docker作为一种主流的应用容器化技术应运而生,成为运维和开发领域最为广泛使用的工具之一。在这样的背景下,Docker离线安装也成为了一个十分常见的需求,因为很多用户无法连上互联网,或者安全等因素禁止了互联网连接,因此离线安装成为最为便捷的安装方式之一。但是,在进行离线安装Docker的过程中,常常会出现安装成功但启动失败的状况,这对于初学者来说是一个十分头疼的问题。

本文将从实际操作出发,介绍Docker离线安装方法,并针对启动失败进行详细的分析,为大家带来一份详细的指导。

一、Docker离线安装

Docker离线安装方式有两种:一种是通过下载Docker的二进制文件进行安装,另一种是通过配置yum源来进行安装。前者主要适用于没有网络条件的服务器,后者则适用于Linux开发环境的离线安装。

1、通过下载Docker的二进制文件进行安装

这种方法的原理比较简单,就是将Docker的二进制文件下载到本地,然后再进行安装。具体操作步骤如下:

1.1 获取Docker的二进制文件

在官网https://www.docker.com/上下载对应版本的Docker二进制文件。在下载时需要了解当前操作系统的信息,对于centos系统,可以选择下载以下地址对应的二进制文件。

https://download.docker.com/linux/static/stable/x86_64/  docker-版本号.tgz

1.2 安装Docker的二进制文件

安装时需要将下载的二进制文件解压,并将其中的docker和dockerd文件移动到/usr/bin目录下。

tar -xvf docker-版本号.tgz
cp docker/* /usr/bin

2、通过配置yum源进行安装

在centos系统下,可以通过配置yum源方式进行离线安装Docker。具体操作步骤如下:

2.1 获取Docker的yum源

在官网https://www.docker.com/上下载对应版本的Docker安装包。在下载时需要了解当前操作系统的信息,下载对应系统版本的rpm包。

2.2 新建本地yum源

在本地新建一个yum源目录,将下载的Docker安装包复制到该目录下,并通过createrepo命令对该目录进行创建

mkdir /var/docker
cp docker-ce*.rpm /var/docker
createrepo /var/docker

2.3 配置yum源

在/etc/yum.repos.d目录下新建一个repo文件,并写入以下内容

[docker-local]
name=Docker Local repo
baseurl=file:///var/docker
enabled=1
gpgcheck=0

2.4 安装Docker

执行以下命令即可安装Docker

yum install docker-ce

二、启动失败解决方案

1、问题描述

在完成上述离线安装Docker的操作后,可能会遇到Docker启动失败的情况,出现以下错误:

$ sudo systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

执行systemctl status docker.service命令可以发现,启动失败的原因是docker.service文件中“ExecStart”指令无法执行成功:

$ sudo systemctl status docker.service
...
Apr 30 07:40:32 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Apr 30 07:40:32 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service failed.
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service holdoff time over, scheduling restart.
Apr 30 07:40:32 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.

$sudo journalctl -xe
dockerd-current[14552]: time="2020-04-30T07:40:32.652790118+08:00" level=error msg="systemd notifier failed: Unable to load systemd module \"libsystemd.so\": cannot open shared o
dockerd-current[14552]: failed to start daemon: Error initializing network controller: list bridge addresses failed: PredefinedLocalScopeDefaultNetworks List failed: Predefined
dockerd-current[14552]: Error starting daemon: Error initializing network controller: list bridge addresses failed: PredefinedLocalScopeDefaultNetworks List failed: Predefined
systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start Docker Application Container Engine.
systemd[1]: Unit docker.service entered failed state.
systemd[1]: docker.service failed.

2、问题解析

通过上述错误信息,可以发现Docker启动失败的原因是因为Docker的网络控制器无法启动。具体是因为Docker的网络控制器通过iptables防火墙对容器网络进行管理,而防火墙默认是禁止所有非本地流量的。对于Docker而言,在第一次启动时会自动在iptables中添加相关规则,但离线安装的Docker如果是第一次启动,就会出现添加规则失败,从而导致网络控制器无法启动的问题。具体表现就是当用户启动Docker时,Docker将会根据本地的IP地址,自动创建一个名为docker0的网桥,如果该操作失败,Docker则无法启动。

3、问题解决

解决该问题的方法主要有两种:

3.1 创建docker0网桥

手动创建docker0网桥可以解决该问题,在centos下,可以执行以下命令来手动创建docker0网桥:

sudo ip link add name docker0 type bridge
sudo ip addr add dev docker0 172.17.0.1/16
sudo ip link set dev docker0 up

完成上述操作之后,再次启动Docker,以管理员身份执行以下命令:

$ sudo systemctl start docker

即可完成Docker的启动。

3.2 修改防火墙规则

关闭防火墙或者修改防火墙规则也是解决该问题的一种有效方法。在关闭防火墙时,可以使用以下命令:

$ systemctl stop firewalld
$ systemctl disable firewalld

但这种情况不太推荐,建议按照安全要求尽量保留系统的防火墙。

如果希望修改iptables规则,可以通过以下命令添加规则:

$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -I FORWARD -j ACCEPT
$ sudo service iptables save

执行完以上操作之后,再次启动Docker,即可正常启动。

三、总结

通过本文的介绍,我们可以看到,在离线安装Docker时,由于网络问题可能会导致Docker无法启动。这时,我们需要对Docker的网络控制器的工作原理有所了解,并对其进行手动配置或者iptables防火墙进行一定的修改,才能最终解决Docker启动失败的问题。当然,我们也可以通过及时查看具体的错误信息,并进行分析来解决这类问题。

因此,在进行Docker离线安装和启动过程中,我们需要保持谨慎和耐心,不断进行试验和调试,最终找到合适的方法来解决问题。

以上是离线安装docker启动失败的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
docker怎么启动容器docker怎么启动容器Apr 15, 2025 pm 12:27 PM

Docker 容器启动步骤:拉取容器镜像:运行 "docker pull [镜像名称]"。创建容器:使用 "docker create [选项] [镜像名称] [命令和参数]"。启动容器:执行 "docker start [容器名称或 ID]"。检查容器状态:通过 "docker ps" 验证容器是否正在运行。

docker怎么查看日志docker怎么查看日志Apr 15, 2025 pm 12:24 PM

查看 Docker 日志的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令运行 /bin/sh 并查看日志文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com

docker容器名称怎么查docker容器名称怎么查Apr 15, 2025 pm 12:21 PM

可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

docker怎么创建容器docker怎么创建容器Apr 15, 2025 pm 12:18 PM

在 Docker 中创建容器: 1. 拉取镜像: docker pull [镜像名] 2. 创建容器: docker run [选项] [镜像名] [命令] 3. 启动容器: docker start [容器名]

docker怎么退出容器docker怎么退出容器Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四种方法:容器终端中使用 Ctrl D 快捷键容器终端中输入 exit 命令宿主机终端中使用 docker stop <container_name> 命令宿主机终端中使用 docker kill <container_name> 命令(强制退出)

docker内的文件怎么拷贝到外面docker内的文件怎么拷贝到外面Apr 15, 2025 pm 12:12 PM

Docker 中将文件拷贝到外部主机的方法:使用 docker cp 命令:执行 docker cp [选项] <容器路径> <主机路径>。使用数据卷:在主机上创建目录,在创建容器时使用 -v 参数挂载该目录到容器内,实现文件双向同步。

docker怎么启动mysqldocker怎么启动mysqlApr 15, 2025 pm 12:09 PM

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

docker怎么重启docker怎么重启Apr 15, 2025 pm 12:06 PM

重启 Docker 容器的方法:获取容器 ID(docker ps);停止容器(docker stop <container_id>);启动容器(docker start <container_id>);验证重启成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(参考 Docker 文档)。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能