docker技术入门

docker是基于go语言实现的开源容器项目。docker的构想是通过对应用的封装、分发、部署、运行等的生命周期进行管理,达到应用组件级别的一次封装,到处运行。这里的应用组件既可以是一个web应用、一个编译环境,也可以是一个操作系统或集群。

简单的讲,读者可以将docker容器理解为一个轻量级的沙盒,每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,另外容器自身对系统资源的额外需要也很低,远远低于传统虚拟机。

 

docker在开发和运维中的优势:

1:更快速的交付和部署。使用docker,开发人员可以使用镜像来快速构建一套标准的开发环境,开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。而且docker可以快速的创建和删除容器,能实现快速迭代,节约开发、测试、部署的大量时间。

2:更高效的资源利用。相对于虚拟机,docker占用的系统资源少很多。

3:更轻松的迁移和扩展。docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、云平台等。

 

docker和传统的虚拟化方式有何不同?

传统的方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用。docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。

 

docker的三大核心概念:镜像、容器、仓库。

 

镜像:docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了apache应用程序,则可以把它称为一个apache镜像。镜像是创建docker容器的基础。镜像自身是只读的,容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

 

容器:docker容器类似于一个轻量级的沙箱,docker利用容器来运行和分离应用。容器是从镜像创建的应用运行实例,它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见。可以把容器看成是一个简易版的linux系统环境以及运行的在其中的应用程序打包而成的盒子。

 

仓库:docker仓库类似与代码仓库,是docker集中存放镜像文件的场所。

 

docker引擎目前分为两个版本:社区版本(CE)和企业版本(EE),社区版本包括了大部分的核心功能,可以满足大部分需求,而企业版本是要收费的。

 

在centos7.0中安装docker:https://blog.51cto.com/liujingyu/2316065?source=dra

 

docker运行容器前需要本地存在对应的镜像,如果镜像不存在,docker会尝试先从默认镜像仓库下载(默认使用docker hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

 

镜像是运行容器的前提,可以使用docker pull命令从docker hub镜像源来下载镜像。命令格式为:docker pull name[:tag]。其中name是镜像仓库名字,tag是镜像的标签。通常情况下描述一个镜像需要包括名称+标签。如果不显示指定tag,则会默认选择latest标签,表示下载仓库中最新版本的镜像。

例如:获取一个Ubuntu 18.04系统的基础镜像:docker pull ubuntu:18.04

例如:下载最新版本的ubuntu镜像:docker pull ubuntu

如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:18.04镜像,可以使用如下命令,docker pull hub.c.163.com/public/ubuntu:18.04,此时下载的镜像名称为hub.c.163.com/public/ubuntu:18.04。

 

使用docker images或docker image ls可以列出本地主机上已有镜像的基本信息:docker images:

可以使用tag命令添加镜像标签。例如,添加一个新的myubuntu:latest镜像标签:docker tag ubuntu:latest myubuntu:latest

使用docker inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等。

如:docker inspect ubuntu:18.04

 

使用docker history可以查看镜像历史,例如,查看redis镜像的历史:docker history redis:latest

使用docker search命令可以搜索docker hub官方仓库中的镜像。语法为:docker search keyword。

 

使用docker rmi或docker image rm命令可以删除镜像。命令格式为:docker rmi IMAGE,其中IMAGE可以为标签名或标签id。

例如,要删除掉myubuntu:latest镜像:

方法一:docker rmi myubuntu:latest

方法二:docker rmi d131e0fa2585

读者可能会想到,本地的ubuntu:latest镜像是否会受到此命令的影响,无须担心,当同一个镜像有多个标签的时候,docker rmi只是删除了该镜像中指定的标签而已,并不影响镜像文件。因此,方法一只是删除了镜像d131e0fa2585的一个标签副本而已。但方法二会删除该镜像的所有副本。

注意:当有该镜像创建的容器存在的时候,镜像文件默认是无法被删除的。

例如:先利用ubuntu:18.04镜像创建一个简单的容器并输出一段话:docker run ubuntu:18.04 echo 'hello'

使用docker ps -a命令可以看到本机上所有存在的容器:

 

使用docker一段时间后,系统中可能会遗留一些临时的镜像文件以及一些没有被使用的镜像。可以通过docker image prune命令来进行清理。

例如, 如下命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间:
$ docker image prune -f

 

创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值