【技术分享】docker基础
- 2020 年 2 月 16 日
- 筆記

目录
1、引子
2、要素
3、镜像
4、容器
5、总结
1、引子
我们在写代码的过程中,或多或少都会遇到这样的问题:写了代码,在别人电脑上运行不了,一检查,别人电脑缺环境。
那怎么办?简单呀,装!
不知道有多少小伙伴装过spark环境、influxdb环境,两眼泪千行呀!
况且,如果我这个代码要在一百台机子上运行呢?
那还能怎么办?
是不是可以直接把[环境+配置+代码]一起给别人来运行?
可以,docker干的就是这个。
它的核心理念是:一次安装,到处运行。
我们用一个形象生动的比喻:以前搬家,我们一件一件东西搬,由于房型不同,东西摆放位置肯定不同,刚开始会有一些不习惯。docker来了,说:这有什么难的,我整个房子一起搬。
我们看看docker的图标:

图标中,鲸鱼就是docker,我们的代码就是一个个集装箱。
2、要素
docker由三元素组成:镜像、容器、仓库。
镜像是指环境+程序,主要包含简易的linux内核、程序运行环境、代码、数据等;
容器是指运行的镜像,可使用类和对象来类比镜像和容器;
仓库是指存放镜像的地方,最大的仓库是dockerhub。
咦,有的小伙伴可能会怀疑,这有点像虚拟机呀。
其实,有很大差别的:
1)虚拟机会安装一个操作系统应该有的所有东西,而docker只安装基础的linux内核,所以,虚拟机通常几个G,docker容器通常几百M。
2)虚拟机启动很慢,需要加载很多资源。
3)虚拟机本身是虚拟操作系统,而docker容器与宿主机共享操作系统。
3、镜像
前面说过,镜像就是 环境+程序。更具体来说,镜像是一层一层的代码,最底层是linux内核,上一层程序运行环境,再上一层是一些环境配置,最后是我们写的代码。
这样,不管我们把这个镜像放在哪儿,只要装了docker,由于自身带了环境和配置,就可以运行写的代码。
镜像相关的命令有什么呢:
docker images:查看镜像
docker search 镜像名:在仓库搜索某个镜像
docker pull 镜像名:从仓库拉取某个镜像
docker rmi 镜像名:删除某个镜像
(制作镜像的过程后命令留着第二次分享)
对了,上述命令中如果只使用“镜像名”,等同于使用该镜像最新版本,即“镜像名:latest”,如果要指定版本号,在镜像名后面添加上版本号,即“镜像名:版本号”
4、容器
拿到一个镜像以后,我们可以创建一个实例,就可以使用镜像里的环境,运行里面的代码了。
容器相关的命令有:
docker run [option] 镜像名:根据镜像创建并且运行一个容器
常用[option]有-t,以交互的方式启动,即前台启动;-d后台启动;-t分配伪终端;–name指定容器名。eg. docker run -it hello-world
docker ps [option]:列出运行的容器
常用[option]有-a,所有容器;-n最近几个创建的容器。
docker start 容器名:启动容器
docker restart 容器名:重启容器
docker stop 容器名:停止容器(等待自然结束)
docker kill 容器名:强制停止容器
docker rm 容器名:删除容器
在容器中退出该容器:
exit:容器停止运行并退出
ctrl+p+q:容器不停止并退出
5、总结
最基础的docker部分基本上就是这些。
总的来说,docker还是比较强大的,解决了多台机子配置同一环境的烦恼,用着也不是很难,值得推荐。
学习新东西,最艰难的往往是第一步,加油~
1.01^365=37.8,共勉之~
给我好看