docker:一键运行,玩转奔跑吧入门篇
“ docker是个好东西,一键运行,玩转奔跑吧入门篇,无比畅快”
自从奔跑吧入门篇出来之后,笨叔之前搞了一个vmware+优麒麟Linux 18.04的全套实验环境的虚拟机镜像。但是有不少同学纷纷留言,希望笨叔搞一个docker镜像。
docker是好东西,运行效率高,而且轻巧,但是docker做奔跑吧实验还是有缺点:
docker镜像不能做内核编译实验,比如书中第1章实验1和实验2
不能做kdump实验,比如书中的第11章实验17等。
笨叔的实验代码里,每个实验代码都配备了一个额外的实验说明,用MS word写的,在docker里打不开,需要大家在Linux host主机用Lireoffice打开了。主要是笨叔担心有的同学实验做不出来,~_~, 有可能是笨叔多虑了~_~
docker默认不支持图形界面,所以eclipse+gdb图形化单步调试内核的实验做不了,比如第三章实验3。
如果大家觉得docker还是不爽,笨叔建议:
直接在电脑里做优麒麟Linux 18.04,别玩啥鸟虚拟机了
如果不行,那就用笨叔做好的vmware+优麒麟的镜像。
安装docker
废话少说,下面来教大家怎么玩docker。(下面以优麒麟Linux 18.04为例)
安装docker
#sudo apt install docker docker.io
创建docker组
#sudo groupadd docker
将当前用户加入docker组
#sudo gpasswd -a ${USER} docker
重启docker
#sudo service docker restart
#sudo service docker enable
刷新docker组
#newgrp - docker
运行docker
笨叔已经把docker镜像上传到dockerhub上了。
下面一键就可以下载并运行docker啦:
$docker run -it --rm benshushu/runninglinuxkernel:rlk_basic_ubuntu bash
效果如图:
实验代码是在/root/rlk/runninglinuxkernel_4.0目录下面。
另外这个docker里配备了vim 8,以及笨叔推荐的全套vim插件,用来编辑内核代码,爽歪歪!!
保存docker
如何保存docker里面的内容?
输入docker ps命令查看当前commit id
上面可以看到container id是d54d1a0a4247
2. 通过docker commit命令来提交改动
#docker commit -m "add ben folder" d54d1a0a4247 benshushu/runninglinuxkernel:rlk_basic_ubuntu
docker commit :从容器创建一个新的镜像。
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
3. 退出当前docker,重新登录,就会看到改动已经在了。
配套资源
1. 配套实验代码
配套实验代码仓库在码云上,大家可以自行下载。
# git clone https://gitee.com/benshushu/runninglinuxkernel_4.0.git
# git checkout rlk_basic
2. 配套课件下载
我们制作了精美的课件,免费提供给广大读者。
课件已经上传到码云,稍后会上传到异步社区官方主页。
想尝鲜的小伙伴可以看这里:
https://gitee.com/benshushu/Running-LinuxKernel
3. 配套实验环境
为了方便广大读者能快速做实验,我们基于优麒麟Linux 18.04系统做了一个vmware镜像,在这个镜像里,包含了我们的全部实验代码,以及实验环境,大家下载下来开箱即用!
想尝鲜的小伙伴可以通过如下百度网盘来下载(稍后会上传到异步社区官网):
https://pan.baidu.com/s/1XlJzdUBH_V7IwNRH1R4jrg
4. 配套免费补充视频
为了广大小伙伴能快速入门,我们精心制作了高清视频,购买了入门酱香篇的小伙伴可以在线观看。稍后会上传到异步社区网站,请关注异步社区官网或者奔跑吧Linux社区微信公众号。
购买地址:
异步社区:
https://www.epubit.com/book/detail/39321
可以现在购买了,点击“阅读原文”。
京东自营:https://item.jd.com/12546036.html
当当自营:http://product.dangdang.com/26514293.html
[往期精彩]
[笨叔点滴12]面试必考:如果在中断处理函数里发生了缺页中断会怎样?为什么?
[笨叔点滴5] git rebase和git merge究竟有啥区别?
[笨叔点滴2] 为啥子ARM32体系结构中每个处理模式都有一个单独的栈?
[笨叔点滴1] 为什么do_page_fault函数里代码需要判断用户态还是内核态?
高级运维必杀技:如何图形化单步调试RHEL/Centos 7里的内核?