docker系列:3、docker入门教程及HelloWorld(以git方式类比学习docker)
1、前言
前面我们已经学习了很多docker的概念,下面我们按照tutorial执行clone、Build、Run、Share,之后按照教程的过程制作简单的Hello World,此外,由于国内的特殊情况,过程中需要设置一下镜像地址为国内地址。
整个教程比较简单,先了解并简单理解镜像、容器、仓库三个概念,然后根据教程走一遍,你会发现对这三个概念有了更深的认识,也能感觉到docker的一般使用过程和git有相似之处。
2、修改镜像地址
如下地址添加镜像地址:https://docker.mirrors.ustc.edu.cn/
还有诸如阿里云、华为云、腾讯云等的仓库地址搜索添加即可,这里为json的字符串数组,其它的参数这里暂时不展开说明。
3. 教程案例
可以通过右下角鲸鱼图标右键进入Quick Start Guide:
- 1、Clone:
-
2、Build(等待编译完成,整个编译过程比较耗时):
注意:期间可能出现如下错误(Failed to create usr/lib/python2.7/ensurepip/… ERROR:python2-2.7.18-r0: IO ERROR excutor failed running [/bin/sh -c apk add --no-cache python g++ make]:exit code: 1),这可能是由于没有超级管理员权限导致的,使用管理员权限打开powershell重新执行编译即可,如下所示。
错误截图:
如果上述编译错误,则使用管理员权限打开powershell后重新运行:
- 3、Run:
- 4、Share:
前提是有Docker Hub,然后登录之后将我们的docker打包上传,这个和git仓库使用非常类似(去这里注册:https://hub.docker.com/)。
docker login
docker tag NAME USERNAME/NAME
docker push USERNAME/NAME
之后也可以在docker hub的网页上看到:
然后可以在docker的桌面上按照提示打开浏览器:http://127.0.0.1/
之后就会展示一个教程web:
在这里基本上我们常用的命令和解释都有了,可以快速看一遍,然后根据自己的需求试一下我感觉基本就初步掌握docker了,至少够用了。
4. hello world
docker run ubuntu:18.04 /bin/echo "Hello World"
实例化ubuntu18.04的镜像为容器,然后运行打印“Hello World”,相当于实例化类后的容器对象调用打印方法打印了一句话,这个操作就可以作为一个单独的容器来管理。
5. 最后
目前个人感觉docker的难点就是大量命令和概念,就像刚开始学习git、vim类似,被命令和概念绕住了,其实不用纠结,开始学习时按照官方的教程进行初步操作,之后在实际项目中练手即可,慢慢就会熟悉和加深理解,也会发现其实一般情况下用到的命令就是哪几个,用到一些复杂命令再去查询即可。所以接下来我们总结一下个人常用的命令和DockerFile的语法规则。
其实我将我的静态主页内容也以docker容器方式放入云服务器中运行了,该容器包括Ubuntu18.04、nginx、go、git、vim等运行环境,后续开发一些后台接口、增加数据库以及迁移也都会使用docker方式,这样的开发方式将模块化提升为了容器化,本地模块也提升为了云模块,本地的多进程交互提升为了分布式交互,确实变得更加开放(但于此同时也确实带来了管理的难度和复杂性,这时候根据需求我们也能过渡到k8s、Jenkins的学习)。后续本地开发完后提交至Git仓库,然后在服务器上创建脚本从仓库自动化拉取、测试、发布,这样个人即团队,等到业务量上来后,各个部分又可以由不同的人做更细致观测和优化,也可以通过更多的人复制化、定制化的以已有样板进行扩散。