欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剖析Docker(简介与常用命令)

程序员文章站 2024-03-11 19:22:07
...

一.概述

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。说白了,docker是一种用了新颖方式实现的轻量级虚拟机,类似于VM,但是在原理和应用上和VM的差别还是很大的.并且docker的专业叫法是应用容器(Application Container)。

一个完整的Docker有以下几个部分组成:

dockerClien       #客户端
Docker Daemon     #守护进程
Docker Image      #镜像
DockerContainer   #容器

二.基本概念

Docker包括三个基本概念:
      镜像(Image)
      容器(Container)
      仓库(Repository)

1.镜像

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
当新建一层时,之前的那一层就已经成为了镜像层,运行时是自下而上的,所以结果肯定会包含上一层所执行的结果,因为你对之前的镜像层没有进行插入操作,就只是在往上叠加,所以除了现在这层之外的所有层都是一个cache,执行起来比较快。
当你只想执行这一层而且不想要之前某一层的结果时,可以在Dockerfile里边进行修改删掉这一层的run,但是注意这个cache就被破坏了,需要重新执行得到一个新的cache,但是对于结果没有影响,就是比之前慢一点,因为要重新生成cache。

2.容器

个人对于镜像(Image)和容器(Container)的理解,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,
使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

3.仓库

镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,
Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

三.基础命令

1.docker的启动、停止、重启

systemctl start docker        #启动docker服务     
service docker start          
systemctl stop docker         #关闭docker服务 
service docker stop  
systemctl restart  docker     #重启docker服务
service docker restart       
systemctl daemon-reload       #重载守护进程 
chkconfig docker on           #开机自启docker

2.容器的管理

docker run -it --name vm1 ubuntu bash   #创建并运行一个新的容器 	   			(run=create+start)    -it 表示交互式
docker run -d  --name vm1 nginx         #创建并运行一个新的容器;-d表示打入后台
docker info                             #显示docker系统信息,包括镜像和容器数等
docker version                          #查看docker容器版本  
docker search  ...                      #搜索符合条件的镜像
docker ps -a                            #查看所有容器状态
docker ps                               #查看正在运行的容器进程
docker pull nginx                       #拉取镜像
docker push                             #将镜像推送至远程仓库
docker history nginx                    #查看指定镜像的创建历史
docker attach vm1                       #连接容器
docker top vm1                          #查看容器进程
docker logs vm1                         #查看容器指令输出; -f表示可以实时查看
docker inspect vm1                      #查看容器的参数(获取容器元数据)
docker stats vm1                        #查看容器资源使用率
docker diff vm1                         #查看容器修改
docker start vm1                        #启动容器
docker stop vm1                         #停止容器
docker restart vm1                      #重启容器
docker kill vm1                         #强制杀死容器
docker pause vm1                        #暂停容器
docker unpause vm1                      #恢复容器
docker rm vm1                           #删除容器; -f表示强制删除
docker export vm1 > vm1.tar             #导出容器
docker import vm1.tar image             #导入容器为镜像image

3.镜像管理
镜像用来创建容器,是容器的只读模板,默认可以从 docker hub 上下载。,每次创建新的镜像都会在父镜像上构建一个增量的层,基于 AUFS 技术。

docker search                      #查询镜像
docker pull      				   #拉取镜像
docker push      			       #推送镜像
docker inspect    				   #查看镜像详情
docker images     				   #列出本地已有的所有镜像
docker load -i ubuntu.tar          #导入镜像
docker commit                      #更新镜像
docker rmi        				   #删除镜像
docker build      			       #创建镜像