Docker入门

前言:

以下是Docker的官方介绍:

Docker 是一种最流行的容器化实现方案,和虚拟化技术类似,它极大地方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker,可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过它们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源管理,也比虚拟化技术更加节约资源。

从上面的话中,我们可以提取出简要信息出来:方便应用服务部署,可以实现应用服务打包,多应用隔离….等等

其实我使用docker的初衷是由于之前学习的爬虫,后面接触到框架内容时,就有各种各样的环境部署问题,还记得那时候,一下子就花了大半天时间,去部署相关环境,弄得我后面抓狂了哈哈哈。

后来就听说有这么个虚拟化容器技术,然后我就上手使用了,后来…嗯,真香!



Docker总览

  1. 容器:Docker可以同时运用多个服务(存储在容器中),容器是Docker最重要的概念,容器承载着镜像,而镜像可以理解为跟虚拟机里面的镜像文件类似的东西
  2. 可以将应用服务打包成tar文件(就像把当前镜像写成一个文件,也可以由文件还原成镜像)
  3. 仓库存储着很多镜像文件、可以下载的软件等等,从仓库下载速度很快
  4. Dockerfile是配置文件,可以构建镜像

我们今天这篇Docker入门介绍主要就是围绕这个图进行展开的。

现在我们动手实战吧:https://labs.play-with-docker.com/

这个网站提供了Docker网页版,我们可以不用下载Docker,就可以在上面试试手。


Docker实战

下载与运行:

  • pull命令可以从仓库获取我们需要的镜像,这里使用nginx示例
  • 可以看到,上面有个80的字样,我们就配置好了nginx服务(是不是超级简单!!)

网页效果:



查看当前运行服务

  • 可以发现一些命令和Linux是有共同之处的

  • 服务由几部分组成:

    ①container ID:服务运行的ID号

    ② Name :名称,可以使用–name 进行指定

    ③ image:镜像文件

    ④ 后面还有一些该服务的相关信息,比如创建使用的命令、运行的服务时长、什么时候创建的等等


关闭进程

  • 首先,使用docker container ls 或者 docker ps 查找到进程的ID号
  • 然后使用 rm -f id号 进行删除

commit镜像

  • 我们可以将当前运行的服务,生成为镜像文件
  • 命令为:docker commit 进程id 将要生成的镜像名

运行commit的镜像文件

  • 我们利用镜像文件生成了另一个nginx服务,映射成81的外部端口

镜像与 tar文件的交互

第一步,写入到tar文件:

docker save 镜像名 > 文件名.tar (>的意思是,使用覆盖的方式)


第二步,需要先删除镜像文件run的服务,不然无法删除该镜像文件(会提示正使用中)

  • docker images查看当前的镜像文件。

第三步,使用load命令加入镜像文件



Docker 内部IP示意图

  • 宿主机在这里我们举例为eth0口(容器与宿主机交互通过docker网卡转发路由)
  • Docker安装后会生成一个docker0网卡(IP通常是127.27.0.1),而容器的IP会等于 Docker网卡IP +1+1…
  • 主要实现:如果想要访问容器1的Mysql服务,我们需要在宿主机输入:127.27.0.2:3306

写在最后

Docker的介绍就到这里啦~我觉得掌握了这个,就免去了很多环境部署的烦恼…

而且建议大家都在Linux系统下面部署开发环境。对!(一把辛酸泪)