Docker入坑系列(一)

引用嘛,当然是来引用别人说的东西啦。

Docker 是一个开源项目,诞生于 2013 年初,它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

PS:

  1. 由于小轩对Centos7命令不太熟,所以此次系统选择的Centos6.5。(其实是手里只有6.5和7的镜像啦,不想再下载啦。)
  2. 针对Centos6.x最小化安装之后的一些个人习惯,参见:Centos6.x最小化安装后的9件事。当然灵感来源于Ubuntu16.04安装后必备14件事-。-

记得不知道在哪里看过,Docker在Centos上有内核要求,从别家博客扒拉出来的一个要求是这样的:

  1. 必须是64位Centos。
  2. 建议内核在3.8以上。

既然首次入坑,就先按照先辈们的经验来吧:

查看系统位数

➜  ~ getconf LONG_BIT
64

嗯,64的。

查看内核版本

➜  ~ uname -r
2.6.32-754.3.5.el6.x86_64
➜ ~ uname -a
Linux docker.centos6.5 2.6.32-754.3.5.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

嗯,内核版本2.6.......显然,内核版本不靠谱啊。那就先升级内核吧。

Centos6.5 内核升级

在Linux中,内核升级在我认知的世界中有两种方式:

  1. 内核源码编译
  2. rpm包安装

咳咳,咱们这次的主题是Docker不是Linux~,所以就使用rpm包安装吧。(其实昨天在阿里云上下载了3个小时的内核包都没下完。耐性不够啊-。-)

既然是rpm包安装那就简单多啦。

rpm安装linux内核

首先呢,以root用户输入

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

之后呢,输入

rpm -Uvh https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm

然后咧,输入

yum -y --enablerepo=elrepo-kernel install kernel-lt

别打我~这里有。参见Get started~~

静静的等待软件包下载完毕,小轩这里就不上图了,直接copy吧。

➜  /opt yum -y --enablerepo=elrepo-kernel install kernel-lt
已加载插件:fastestmirror
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: ftp.utexas.edu
* elrepo-kernel: ftp.utexas.edu
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
elrepo | 2.9 kB 00:00
elrepo/primary_db | 694 kB 00:02
elrepo-kernel | 2.9 kB 00:00
elrepo-kernel/primary_db | 22 kB 00:00
解决依赖关系
--> 执行事务检查
---> Package kernel-lt.x86_64 0:4.4.147-1.el6.elrepo will be 安装
--> 完成依赖关系计算 依赖关系解决 ========================================================================================
软件包 架构 版本 仓库 大小
========================================================================================
正在安装:
kernel-lt x86_64 4.4.147-1.el6.elrepo elrepo-kernel 39 M 事务概要
========================================================================================
Install 1 Package(s) 总下载量:39 M
Installed size: 178 M
下载软件包:
kernel-lt-4.4.147-1.el6.elrep 50% [=========- ] 67 kB/s | 20 MB 04:52 ETA

速度堪优啊。。。。。。。。。。。

Waiting…………..

我去,好坑啊-。-把FQ一关,下载完了。。。。。尴尬。走着,咱们继续。

总下载量:39 M
Installed size: 178 M
下载软件包:
http://ftp.utexas.edu/elrepo/kernel/el6/x86_64/RPMS/kernel-lt-4.4.147-1.el6.elrepo.x86_64.rpm: [Errno 12] Timeout on http://ftp.utexas.edu/elrepo/kernel/el6/x86_64/RPMS/kernel-lt-4.4.147-1.el6.elrepo.x86_64.rpm: (28, 'Operation too slow. Less than 1 bytes/sec transfered the last 30 seconds')
尝试其他镜像。
http://muug.ca/mirror/elrepo/kernel/el6/x86_64/RPMS/kernel-lt-4.4.147-1.el6.elrepo.x86_64.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'muug.ca'"
尝试其他镜像。
kernel-lt-4.4.147-1.el6.elrepo.x86_64.rpm | 39 MB 00:41
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.
正在安装 : kernel-lt-4.4.147-1.el6.elrepo.x86_64 1/1
Verifying : kernel-lt-4.4.147-1.el6.elrepo.x86_64 1/1 已安装:
kernel-lt.x86_64 0:4.4.147-1.el6.elrepo 完毕!
➜ /opt

好啦,之后呢,我们让系统以CentOS (4.4.147-1.el6.elrepo.x86_64)内核启动。

以root身份修改/etc/grub.conf文件,将default修改为CentOS (4.4.147-1.el6.elrepo.x86_64)的下标。

PS:

可以这样说吧-。-学名叫啥我也不知道,对于程序员来说,数组下标能更好理解???

经过Centos6.x最小化安装后的9件事这里的配置,应该是第10行。将第10行的default=1修改为default=0

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_docker-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.4.147-1.el6.elrepo.x86_64)
root (hd0,0)
kernel /vmlinuz-4.4.147-1.el6.elrepo.x86_64 ro root=/dev/mapper/vg_docker-lv_root nomodeset rd_NO_LUKS rd_LVM_LV=vg_docker/lv_swap LANG=en_US.UTF-8 rd_LVM_LV=vg_docker/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-4.4.147-1.el6.elrepo.x86_64.img
title CentOS (2.6.32-754.3.5.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-754.3.5.el6.x86_64 ro root=/dev/mapper/vg_docker-lv_root nomodeset rd_NO_LUKS rd_LVM_LV=vg_docker/lv_swap LANG=en_US.UTF-8 rd_LVM_LV=vg_docker/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-754.3.5.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_docker-lv_root nomodeset rd_NO_LUKS rd_LVM_LV=vg_docker/lv_swap LANG=en_US.UTF-8 rd_LVM_LV=vg_docker/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img

好了,最重要的一步!!!输入:init 6或者reboot让服务器重启~~~~

 ✘ xuan@tdg  ~  ssh root@10.211.55.4
Last login: Thu Aug 16 10:29:43 2018 from 10.211.55.2
➜ ~ uname -r
4.4.147-1.el6.elrepo.x86_64
➜ ~

大功告成~~~我们的系统内核已经成功的从2.6.32-754.3.5.el6.x86_64升级到了4.4.147-1.el6.elrepo.x86_64~~那接下来就是Docker真正的入坑纪录了!

Let's go!

彩蛋

提供一些查看linux系统版本号和系统位数的方法:

➜  ~ cat /etc/redhat-release
CentOS release 6.10 (Final)
➜ ~ cat /proc/version
Linux version 4.4.147-1.el6.elrepo.x86_64 (mockbuild@Build64R6) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Thu Aug 9 10:58:02 EDT 2018
➜ ~ uname -a
Linux docker.centos6.5 4.4.147-1.el6.elrepo.x86_64 #1 SMP Thu Aug 9 10:58:02 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
➜ ~ uname -r
4.4.147-1.el6.elrepo.x86_64
➜ ~ cat /etc/issue
CentOS release 6.10 (Final)
Kernel \r on an \m ➜ ~ getconf LONG_BIT
64
➜ ~ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
➜ ~

Docker入坑系列(一)的更多相关文章

  1. Docker入坑系列(二)

    Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...

  2. gulp入坑系列(2)——初试JS代码合并与压缩

    在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...

  3. 3-STM32带你入坑系列(自己封装点亮一个灯的库--Keil)

    2-STM32带你入坑系列(点亮一个灯--Keil) 首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h" 还记得上一节 现在呢就是做一个 ...

  4. 2-STM32带你入坑系列(点亮一个灯--Keil)

    1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...

  5. 1-STM32带你入坑系列(STM32介绍)

    由于自己的物联网开发板上的单片机是用的STM32,但是有些朋友没有用过,所以我将用这块开发板,带着大家入门STM32 先介绍一下STM32,我是在大三下学期的时候开始接触STM32,当时是想做一个小车 ...

  6. Docker 入坑教程笔记

    Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动 ...

  7. 入坑第二式 golang入坑系列

    史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...

  8. Docker入坑指南之RUN

    总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得, ...

  9. 初生牛犊不怕虎 golang入坑系列

    读前必读,下面所有内容都是来自这里. 放到这里的目的,就是为了比对一下,哪里的读者多.平心而论,同样的Markdown,博客园排版真心X看,怎么瞅怎么X看.(X := '难' || X :='耐' | ...

随机推荐

  1. 科技爱好者周刊(第 176 期):中国法院承认 GPL 吗?

    这里记录每周值得分享的科技内容,周五发布. 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. 周刊讨论区的帖子<谁在招人?>,提供大量程 ...

  2. docker四种模式

    1 host模式众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,MountNamespace隔离文件系统,Network Name ...

  3. 运维利器-ClusterShell集群管理

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  4. python if-elif-else 判断

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 age=12 if age<4: price=0 elif age<18: price=40 elif ...

  5. 第08讲:Flink 窗口、时间和水印

    Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...

  6. 字体替换 re.sub

    dic={'hqo3r': '迎', 'hq6ic': '名', 'hq7yw': '头', 'hq1lk': '新', 'hqpe1': '肇'} content=''' 总体hqo3r则,错的注( ...

  7. ApacheCN C/C++ 译文集 20211201 更新

    笨办法学C 中文版 前言 导言:C的笛卡尔之梦 练习0:准备 练习1:启用编译器 练习2:用Make来代替Python 练习3:格式化输出 练习4:Valgrind 介绍 练习5:一个C程序的结构 练 ...

  8. iBooker AI+财务提升星球 2020.4 热门讨论

    比特币量化套利的心路历程(附python量化招聘)(分享自知- 如何选择一份好的工作? 你知道为什么大家都想去好公司吗? 不- #财务知识# 可转债套利 辉丰转债128012套利之三个知道- #财务知 ...

  9. AT2400 [ARC072B] Alice&Brown

    通过打表后可以发现,当初始石头数 \(|X - Y| \le 1\) 时先手必败否则先手必胜. 我们考虑使用归纳证明这个结论,显然 \((1, 0), (1, 1)\) 时是成立的. 基于观察,我们可 ...

  10. 关于C++ scanf的一个小知识

    关于C++的scanf,其实在使用时有一个注意的点. 我们来看一个简单的例子. 对于输入的一行,如果这一行的开头需要输入一个字符,例如这样的输入: A 10 20 B 30 A 3 50 ... 我们 ...