Docker学习

官方地址:https://docs.docker.com/v18.09/

先从认识容器开始

  • 容器较为官方的解释
    一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。
容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
  • 容器较为通俗的解释
    容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境。


物理机、虚拟机与容器理解

  • 物理机
    一栋楼一户人家,独立的地基(地皮)独立的后花园
  • 虚拟机
    一栋楼上面有很多套房,一套房一户人家,他们共享这栋楼的地基(地皮)和后花园,但是他们有独立的卫生间,厨房。
  • 容器
    一套房隔成多个小房间,每个小房间住着一个北漂的程序员,他们共享地基(地皮),后花园,共享卫生间和厨房

镜像、容器和仓库理解

  • 镜像
    可以理解成一个个操作系统的安装包(win10安装包)
  • 容器
    我们通过这些安装包安装好的操作系统(已经安装好的win10操作系统)
  • 仓库
    则是网上很多存放各种镜像提供你下载的地方(微软下载操作系统的地方)
    这里面没有容器

    Docker中
    仓库用来存存储镜像、
    镜像启动起来就是容器。

容器与虚拟机 (VM) 总结

  • 容器是一个应用层抽象,用于将代码和依赖资源打包在一起。 多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行 。与虚拟机相比, 容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动 。
  • 虚拟机(VM)是一个物理硬件层抽象,用于将一台服务器变成多台服务器。 管理程序允许多个VM在一台机器上运行。每个VM都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此占用大量空间。而且VM启动也十分缓慢 。

什么是Docker

Docker就是一个存放了各种容器的平台,供我们来使用。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
可以理解成:docker从仓库下载下来各种镜像安装包,然后在docker平台上安装他们成容器并存放起来,接着我们就可以用这些根据我们需求选择的容器来做我们想做的事了,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

为什么要用docker

假如你要部署一个网站,那么你可能需要一台服务器,然后安装环境、配置七七八八的东西,是不是特别麻烦。这个时候有人在网上提供了配置好各种环境的系统,你只要根据需求下载你需要的系统下来就能快速部署你的网站,而且也不怎么费你电脑的资源,或者当你根据自己需求配置好这个系统,还可以再把它弄成新的镜像提供给和你要跑同样环境的人,你说这么好的东西是不是很心动

Docker 的安装

参考:https://www.jianshu.com/p/2a6451a47fe1

安装好后需要配置加速器

由于docker hub是国外的平台,如果不开启加速器,下载镜像的话贼慢,因此很有必要配置一下加速器来加速下载.
配置参考https://www.jianshu.com/p/1bac12cf781f

入门Demo

#搜索python的docker镜像,根据第一列的NAME来选择一个下载,这里选择第一个
docker search python

#下载python的镜像
docker pull python

#查看下载的镜像,可以发现多了一列python的
docker images

#使用容器
#这里输入命令:
docker run -it python 或者 docker run --name wwgg -it python /bin/bash
#可以看到进入了python的命令行,因为这个镜像进入的默认命令就是`python3`,因此会自动打开命令行
#俩者都是使用python镜像的容器,不过后者给容器取名叫wwgg ,并且输入/bin/bash打开terminal终端
#这个时候就可以输入各种linux系统的命令如:`ls`了,这个就是docker最主要的内容
#退出时可以通过组合键(`ctrl+p+q`)或者命令(`exit`)来退出,前者不关闭容器,后者关闭

#查看容器
docker ps
#查看正在运行的容器,如果要查看所有容器,则后面加上:-a
# 在这里记下容器ID的前几位(只要前面不重复,1位2位都行)
# 前面run命令用了两次,第一个没取名,第二个取名了,所以第一个记下ID
# 假如容器ID是(c6789...),前两位就能判断出是这个容器,那么记下c6就行了然后stop
docker stop c6 
#关闭c6这个容器

#删除容器
docker rm c6 3c
#删除这两个容器(ID 开头是c9 3c)

#删除镜像  必须先删除该镜像的所有容器
#如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
 docker image rm [选项] <镜像1> [<镜像2> ...]
#其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
docker image rm e44
#ID也可以取前3个只要不同可以区别
进入python命令行环境
进入python容器的系统终端
列出正在运行的容器和所有容器
删除容器
删除镜像

通过上面的示例,应该可以大概了解docker是什么,其实可以理解成一个定制的操作系统(也不完全是,但是大体感觉差不多),比如配有java、python环境的操作系统,然后下载下来直接用,并且可以通过命令把我们本地的文件拷贝到里面去运行等等,总之就是个特别方便的东西.

参考Docker命令大全

文章参考:
http://dockone.io/article/6051
https://www.jianshu.com/p/cb7663fd1051

你可能感兴趣的:(Docker学习)