Docker in Docker测试

简介: 想在容器中测试一下docker的简易离线配置步骤,结果遇见几个莫名其妙的错误,记录下排错过程供后续参考。

想在容器中测试一下docker的简易离线配置步骤,结果遇见几个莫名其妙的错误,记录下排错过程供后续参考。
这是一个centos7.9的容器,配置好yum源,包括os和epel,如下:

cat /etc/yum.repos.d/centos.repo 
[centos]
name=centos
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0

从以下地址:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
http://mirrors.163.com/centos/7/extras/x86_64/Packages
下载如下docker-compose安装包:

containerd.io-1.6.4-3.1.el7.x86_64.rpm
container-selinux-2.119.1-1.c57a6f9.el7.noarch.rpm
docker-ce-20.10.15-3.el7.x86_64.rpm
docker-ce-cli 20.10.15-3.el7.x86_64.rpm
docker-ce-rootless-extras-20.10.15-3.el7.x86_64.rpm
docker-compose-plugin-2.5.0-3.el7.x86_64.rpm
docker-scan-plugin-0.17.0-3.el7.x86_64.rpm
fuse3-libs-3.6.1-4.el7.x86_64.rpm
fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
slirp4netns-0.4.3- 4.el7_8.x86_64.rpm

离线安装:

yum localinstall *.rpm

启动docker报错,没有足够的回环设备可用:

ERRO[2022-09-07T11:44:08.607124280Z] There are no more loopback devices available. 
ERRO[2022-09-07T11:44:08.607170072Z] [graphdriver] prior storage driver devicemapper failed: loopback attach failed 
failed to start daemon: error initializing graphdriver: loopback attach failed

手动创建回环设备:

for i in {0..6}
do
  mknod -m 0660 /dev/loop$i b 7 $i
done

启动docker再次报错,没有ext4文件系统支持:

INFO[2022-09-08T00:37:15.652719473Z] Error while creating filesystem ext4 on device docker-0:55-2177230803-base: exec: "mkfs.ext4": executable file not found in $PATH  storage-driver=devicemapper
ERRO[2022-09-08T00:37:15.652785437Z] [graphdriver] prior storage driver devicemapper failed: exec: "mkfs.ext4": executable file not found in $PATH
failed to start daemon: error initializing graphdriver: exec: "mkfs.ext4": executable file not found in $PATH

确认没有ext4:只有默认的xfs?

ll /usr/sbin/mkfs*
-rwxr-xr-x 1 root root 11520 Sep 30  2020 /usr/sbin/mkfs
-rwxr-xr-x 1 root root 37024 Sep 30  2020 /usr/sbin/mkfs.cramfs
-rwxr-xr-x 1 root root 37136 Sep 30  2020 /usr/sbin/mkfs.minix

安装ext4文件系统即可启动docker:

yum provides mkfs.ext4
yum install e2fsprogs -y

此时的问题是,docker显示状态正常,但是无法正常连接:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

但是如果采用直接命令行 dockerd 的方式,是可以的,说明docker基本安装没有问题,但是使用 systemctl start docker 的方式就没法连接docker!
因此这应该是docker服务配置文件的问题了,经查询,默认的docker服务配置文件是:
/usr/lib/systemd/system/docker.service
其中服务启动的命令行是:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改为如下即可,即去掉了 "-H fd://" 部分:
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

这是为什么呢?留待后续。
【2022-9-29】经后来验证,不去掉这个handle标识,实际是可以的,可能要等待一个初始化时间!

目录
相关文章
|
2月前
|
关系型数据库 测试技术 数据库
使用Docker搭建测试用例管理平台TestLink:简易指南
使用Docker搭建TestLink测试管理软件的步骤如下:首先,拉取`bitnami/mariadb`和`bitnami/testlink-archived`镜像。然后,启动MariaDB容器,创建数据库。接着,启动TestLink容器并连接到MariaDB。检查容器状态确保它们已启动。最后,访问`localhost:8099`以使用TestLink,默认用户名为`user`,密码为`bitnami`。这样,你就能在本地便捷地进行测试管理了。
50 2
|
4月前
|
Ubuntu Cloud Native 测试技术
百度搜索:蓝易云【云原生之使用Docker部署ubuntu测试环境】
请注意,以上步骤仅是简单的使用Docker部署Ubuntu测试环境的示例。在实际应用中,您可能需要根据测试需求和应用场景进行更多的配置和优化。同时,在退出容器时,容器并未删除,您可以使用 `docker rm <容器名称>`命令来删除容器。在进行测试时,请谨慎操作,并确保对Docker的使用有一定的了解,以避免不必要的问题。
41 2
|
5月前
|
测试技术 Docker 容器
使用Docker构建多环境应用:开发、测试、生产环境
Docker已经成为了现代应用程序开发和部署的核心工具之一。通过使用Docker,开发团队可以轻松地在不同的环境中构建、测试和部署应用程序,从而提高开发速度和应用程序的可移植性。本文将介绍如何使用Docker构建多环境应用,包括开发、测试和生产环境,并提供丰富的示例代码,以帮助大家轻松应对不同环境的挑战。
|
12天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
45 1
|
12天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(上)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
47 0
|
1月前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
50 6
|
2月前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
154 3
|
4月前
|
Web App开发 Linux 数据安全/隐私保护
Docker本地部署开源浏览器Firefox并远程访问进行测试
Docker本地部署开源浏览器Firefox并远程访问进行测试
153 1
|
5月前
|
安全 测试技术 持续交付
Docker和容器编排工具的自动化测试:构建可靠的容器化应用
容器化应用程序在现代软件开发中越来越受欢迎,而Docker和容器编排工具如Kubernetes、Docker Compose等的自动化测试是确保应用程序的可靠性和稳定性的关键。本文将深入探讨如何使用自动化测试来验证和验证Docker容器化应用程序,提供丰富的示例代码和详细的指南,以帮助您构建更可靠的容器化应用。
|
5月前
|
NoSQL 测试技术 Redis
Redis【性能 02】Redis-5.0.14伪集群和Docker集群搭建及延迟和性能测试(均无法提升性能)
Redis【性能 02】Redis-5.0.14伪集群和Docker集群搭建及延迟和性能测试(均无法提升性能)
155 0