初识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


浙公网安备 33010602011771号