Docker 验证 Centos7.2 离线安装 Docker 环境

本文详细记录了作者在离线环境下为CentOS7.2安装Docker-CE的过程,包括遇到的挑战、解决依赖问题的策略、验证方法以及最终的成功实践。在尝试在线安装Docker时遇到了D-Bus连接错误,通过在MacBook上模拟离线安装,最终在内网服务器上成功安装并启动Docker服务。
摘要由CSDN通过智能技术生成

本文由作者:蛮大人  授权发布
链接:https://opsdev.fun/2018/05/09/O2-0-Docker%E9%AA%8C%E8%AF%81Centos7-2%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85Docker%E7%8E%AF%E5%A2%83/
著作权归作者所有。
转载请联系作者获得授权。

题记:搞定了就是故事,搞不定就是事故。

条件有限,开局只有一台开发机,要跑5套子系统组成的项目群。还要有一些辅助和验证的系统要跑在这上面。从配置来看,要想顺畅开心地完成项目群基础环境支撑,考虑引入资源消耗 1/200 的神器 Docker:更难得是丝毫不用担心环境污染、版本冲突、以及突然开发服务器搞崩溃了;

吐槽避免采坑

  • 实际上可能要跑的系统和辅助系统远超预计
  • 申请的是4C/8G的PC server,后来查命令是1C/2G,10G空间,果断申请扩容了
  • 边干边写:整了四周;期间无数次崩溃,还要应对乙方内部的质疑,不知道自己是如何坚持下来的

第一周折腾无实质交付

1、MacBook 上 docker 环境起了 CentOS7.2 容器,在容器中模拟离线安装 Docker 环境(盗梦空间)

2、安装很成功,按官方教程启动服务时,崩溃到怀疑人生:

  • 命令 ”systemctl start docker” 报错:”docker Failed to get D-Bus connection”
  • CentOS 从 7 开始,安全考虑,容器内默认不加载 D-Bus:直接影响就是 systemctl 不能起服务;
  • github 支招:加容器特权参数 –privileged ,启动非常之慢,不建议踩坑;参考链接
  • Docker 官方支招:自己编译带 systemctl 服务的镜像 参考链接,

然而我没能测试成功在容器中启动 docker daemo

其他服务没尝试,感兴趣的可自行研究

放弃在容器中使用 systemctl 启动 Docker 镜像服务

 

第二周换Redhad7.2镜像

  • 还是报同样的错误:直接报缺5~8个一级依赖包
  • 后来分析不是 CentOS 和 Redhad 不同步,应该是甲方提供的 CentOS 源或系统优化或缺了一些默认的包;

第三周寄希望于甲方提供的内网源

  • 协调再三给挂了源:是一个 docker 集群监控的源;沟通不畅,不认为挂错了源;
  • 甲方老师又忙。暂停修整了一周;

第四周重整旗鼓

再三协调之后,放弃等待甲方老师的支援。决定还是自己搞。不就是一些一级依赖么,补全就是!

主要是我方火力太猛:

  • 再不出活,无颜面对向兄弟们:虽然不上这些,采用笨办法也能干,但总归不忍
  • 再不交付,无法上得台面解释:
  • 自己选择的牛皮,哭着也要吹完,吹完美

搞定。想来想去,还是毛选里的那句话支撑了我:

自力更生,艰苦奋斗!

最近在看一行禅师的《佛陀传》,希望能从中汲取心灵的力量。《天龙八部》里扫地僧也曾说过:

只有佛法越高,慈悲之念越盛,武功绝技才能练得越我

或许我辈须工作中修行,也是这个道理!

采坑记

对,就是采坑。以下是从草稿中摘取的部分尝试:

编号 容器
1

docker run -it –name dc7 ailyfeng/centos7.2.1511 /bin/bash

2 docker run -it –name ct7 centos /bin/bash
3 docker run -it –name ct7 centos /bin/bash
4 docker run -it –privileged –name dc99 sssllc/centos7.2-jdk1.8
5 docker build –rm -t centos:systemd . && docker run -it –name dr7 centos:systemd
6 docker run -it –name dr18 yjjy0921/redhat7.2 /bin/bash

几个搞定依赖包的有用命令

ldd应该是linux通用的命令;rpm和repotrack貌似是CentoOS的专有命令;

编号 命令 举例 作用
1 ldd ldd wkhtmltopdf not found的就是对应的依赖包不存在,适用于二进制包(wkhtmltopdf)的命令;而需要安装的命令(docker-ce)只能通过安装报错来捕获缺失的依赖了
2 rpm -ql rpm -ql docker-ce 查看安装的时候有哪些命令在PATH下,用这些命令去启动
3 repotrack repotrack -a x86_64 -p /usr/local/yumrepo libgudev1 打包下载指定架构(X86_63)所有的依赖到指定目录

思路:先验证再服务器落地

  • 本地 pull 一个 CentOS7.2 的镜像
  • 只下载 Docker 及其依赖不安装
  • 安装验证
  • 考虑用户及用户组赋权
  • cp 至服务器尝试

安装docker

内网Linux基础依赖

要安装 Docker 基础环境,必须满足:

  • Linux 内核必须大于 3.10:登录内网服务器看了看,恰好 3.10。够用,就不折腾了;
  • 需要支持 device-mapper:已支持
[root@pms tmp] uname -r
3.10.0-327.e17.x86_64
[root@pms tmp] ls -l /sys/class/misc/device-mapper
lrwxrwxrwx. 1 root root 0 May 20 16:17 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper

环境模拟

MacBook 上,起 CentOS7.2 容器,来验证思路;

拉取镜像,创建 repo 目录

ChinaDreams:~ kangcunhua$ docker run -it --name dc88 sssllc/centos7.2-jdk1.8  /bin/bash
[root@7d935562e0ae /]# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
[root@7d935562e0ae /]# yum repo list
Loaded plugins: fastestmirror, ovl
No such command: repo. Please use /usr/bin/yum --help
[root@7d935562e0ae /]# 
[root@7d935562e0ae /]# yum repolist
...
[root@7d935562e0ae home]# cd /usr/local/
root@7d935562e0ae local]# mkdir yumrepo

下载所需离线包

[root&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值