我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛
笔者注:这也是个人初次接触docker的学习笔记,有可能有误,后续等我再深入了解时再来勘误。
书接上回。
几只兔子开始学习RPC框架kitex。在跑到bizdemo下的easy_note服务时,它们看到README里面写着要docker compose up
,而且文件夹下还有个docker-compose.yml
文件。虽然之前它们也听说过docker,但这是它们第一次真正需要去接触这个工具。正所谓“纸上得来终觉浅,绝知此事要躬行”,那就借这个机会学习一下相关知识吧。
在这一部分中它们希望搞清楚如下问题:
- docker是什么?
- 容器和镜像是什么以及它们之间的关系?
- docker的常用命令
- docker还能怎么用?
docker是什么
docker是一个容器工具,它依赖于已存在并运行的 Linux 内核环境。实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。 ——菜鸟教程
以上这段话解答了几个问题:
- 为什么Windows下安装docker时还要再装一个Linux虚拟机?
因为docker是基于Linux内核的,它没法直接安装在Winodws上。 在Windows下安装docker其实就是在套娃:
- docker的机制?
将现有主机资源抽象化、虚拟化成一个个相互独立的容器。
核心概念:容器和镜像
- 镜像是对实物的一个映射,比如制作ubuntu这个操作系统的镜像,镜像具有ubuntu的所有功能,但它不是一个真正的操作系统。
- 容器是docker将主机资源虚拟化后重新分配的结果
- 从某种角度看,镜像类似于面向对象思想中的类,更抽象;而容器类似于其中的对象实体,相对而言是一个具体的东西。
比如现在有一个ubuntu镜像,可以创建a容器也是ubuntu ,b容器也是abuntu,两者相互隔离。你可以认为相对于镜像而言,这两个容器是真实存在的。
docker常用命令
安装docker
-
使用DaoCloud的源以及通过它的脚本下载docker。
curl -sSL https://get.daocloud.io/docker | sh
-
验证是否安装成功
docker -v
出现版本信息即说明成功
常用命令
可通过命令docker
查看帮助信息:
Usage: docker [OPTIONS] COMMAND
后面还很详细地列出了各种OPTIONS选项和COMMAND选项
在这些命令中又以pull、rm等较为常用。
注意事项
要运用一个新的工具,要重点把握两方面,一是使用方法(cmd下的命令或者gui下的界面操作),二是它的生态圈子。要做到后者,配置/更换正确的镜像很重要。
比如一行docker pull mysql:latest
命令,那要看是从哪里拉。如果是国内从国外的官网拉,必然是很慢的。
-
我目前在用的镜像地址是:f1361db2.m.daocloud.io
-
配置文件所在路径:
/etc/docker/daemon.json
(如果文件不存在就新建一个) -
写入内容:
{"registry-mirrors":
[
"http://f1361db2.m.daocloud.io"
]
}
其他镜像,如阿里、腾讯、华为的应该也挺好。如果所用镜像源没有想要的镜像,可以尝试多换几个源。
- 参考这篇文章:Docker必备六大国内镜像
docker还能怎么用
上面提到可以直接通过命令来拉取、上传、删除镜像和容器,但其实就我目前了解到的还有一种办法,就是通过事先写好配置文件,做到一次配置,处处运行,而不需要每一个运行该应用的用户都自己手动配置一次。
那配置文件是什么呢?就是以.yml为后缀的文件。
那系统如何解析这些文件并运行上面的内容呢?这就需要docker-compose
直接一行命令安装这个工具就可以了。
运行需要docker配置的应用
前提:该应用文件目录下有docker-compose.yml
文件
docker-compose up
- 按照README说明依次启动各个服务