初识docker

docker基于go语言实现的云开源项目,docker的主要目标是‘Build,Ship and Run Any App,Anywhere’,即通过对用用组件的封装(Packaging)、分发(DIstribution)、部署(Deployment)、运行(Running)等生命周期的管理,达到应用级别的‘一次封装,到处运行’。应用组件可以是Web应用,数据库服务、甚至操作系统或编译器。

docker基于linux的多项开源技术提供高效、敏捷、轻量级的容器方案。

 

   虚拟化技术是一个通用的概念,在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存与存储等予以抽象、转换后呈现出来。打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。

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

docker镜像类似于虚拟机镜像,可以理解为面向docker引擎的只读模板,包含文件系统。

docker容器类似于轻量级沙箱,利用它可以运行和隔离应用。镜像本身是只读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

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

镜像操作:

镜像是docker运行容器的前提,使用docker pull命令从网络上下载镜像。镜像文件一般是由若干层组成的,行首为代表各层的id。下载过程会获取并输出镜像各层信息,层是实现增量保存和更新的基础。

获取镜像:默认从获取最新。

获取指定版本镜像:

从其他注册服务器获取:

利用该镜像创建一个容器,在其中运行bash应用:

使用docker images命令列出本地主机上已有的镜像

查看镜像信息:

tag信息用于标识同一个仓库的不同镜像。为了方便后续工作,还可以使用docker tag 命令为本地镜像添加新的标签。

不同镜像的id是一致的,它们指向了同一个镜像文件,只是别名不同而已。

使用docker inspect命令可以获取该镜像的详细信息。返回的是json格式的消息。

如果只要其中一项的内容时,可以使用-f参数指定,指定镜像id的时候,可使用前几个字符代替完整的id。

搜寻镜像:

使用docker search命令,搜索远端仓库的共享镜像

删除镜像:

使用docker rmi命令可以删除镜像,当一个镜像有多个标签的时候,只是会删除该标签,并不影响镜像文件,当只有一个标签的时候会彻底删除该镜像。

使用docker rmi 镜像id命令删除镜像,会尝试先删除所有的别名,再删除镜像文件,当有该镜像创建的容器存在的时候,镜像文件无法被删除。强制删除加上-f参数(会有其他问题)正确做法是先删除所有依赖容器在使用临时的id删除镜像文件。

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

 创建镜像:

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

基于已有的镜像的容器创建

 使用docker commit命令 

创建一个新镜像,进行修改,如创建一个test文件

使用docker commit命令 ,提交为一个新镜像,(-a作者信息 -m提交信息 -p提交时暂停容器运行),提交时可以使用id或名称指定容器。命令返回新的镜像id信息。

此时查看本地镜像列表。

基于本地模板导入

 

存入和载入镜像

docker save和docker load命令

存出镜像到本地文件。

从存出的文件再导入到本地镜像库。

上传镜像

docker push命令

   

  容器,可以理解是镜像的一个运行实例,但它带有额外的可写文件层。docker容器就是独立运行的一个或者一组应用,以及他们的必须运行环境。属于轻量级用户可以随时创建和删除容器。

创建命令:docker create命令,此时容器处在停止状态,可以使用docker start命令启动。

新建并启动命令:docker run

 

 守护态运行

docker ps查看容器信息

docker logs获取容器输出信息

 

 终止容器

查看处于终止状态的容器id信息

重新启动终止态的容器

 重启

进入容器,包括docker attach命令,docker exec命令,以及nsenter工具等

docker attach命令,docker自带命令,有个不方便之处,当多个窗口同时attach到同一个容器的时候,所有窗口同步显示,某一个窗口命令阻塞,其他也无法执行

exec命令,可以直接在容器内运行的命令

删除容器

docker rm 

导入导出容器

导出容器是指导出一个已经创建的容器到一个文件,不管此容器是否处于运行状态,使用docker export命令

可以将这些文件传输到其他的机器,在其他的机器上通过导入命令实现容器的迁移

导入容器

导出的文件又可以通过docker import 命令导入成为镜像。

仓库,是集中存放镜像的地方,分为公共仓库和私有仓库。官方维护公共仓库https://hub.docker.com。

实际上注册服务器是存放仓库的具体服务器,每个服务器有多个仓库,每个仓库有多个镜像。

使用registry镜像创建私有仓库,自动下载并启动一个registry容器,创建本地私有仓库服务。

默认会将仓库放在容器的/tem/registry目录下,也可以通过-v存放指定目录,

管理私有仓库

查看已有镜像

docker tag命令标记镜像

docker push上传标记镜像

用curl查看仓库10.0.2.2:5000

原文地址:https://www.cnblogs.com/master-song/p/9583493.html