1 三大核心概念: 镜像(Image) 容器(Container) 仓库(Repository),理解了3大核心概念,就能顺利理解Docker的整个生命周期
1.1 Docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统,例如一个镜像可以只包含一个完整的操作系统,可以把它称为一个系统镜像,如果按照了Apache应用程序,就可以把它称为Apache镜像,镜像是创建Docker容器的基础,Docker提供简单的机制来创建和更新现有的镜像,也可以从网上下载镜像,并可通过简单的命令直接使用
1.2 Docker容器类似于一个轻量级的沙箱,容器来运行和隔离应用,容器是从镜像创建的应用运行实例,可以将其启动,开始,停止,删除,而这些容器都是相互隔离,互不可见的
1.3 Docker仓库:Docker集中存放镜像文件的场所,一个仓库存放某一类镜像,一类镜像可能有多个版本,通过tag来进行区分,仓库分为公开仓库和私有仓库,当用户创建了自己的镜像后就可以使用push命令将它上传到指定的共有或者私有仓库,然后用户就可以使用pull将其从仓库上下载自己保存的镜像。Docker利用仓库管理镜像的设计理念同Git
2 镜像
2.1 获取镜像
命令使用docker pull 命令从网络上下载镜像,docker pull Name[:TAG] 如果不指定TAG,则默认会选择latest标签(最新版本的镜像)
docker pull registry.hub.docker.com/ubuntu:latest:从默认的注册服务器(registry.hub.docker.com)下载ubuntu最新版本的镜像
2.2查询镜像信息
docker images : 可以看到几个字段信息:
(1)来自于哪个仓库
(2)镜像的标签信息
(3)镜像的id号(唯一):唯一标志了一个镜像
(4)创建时间
(5)镜像大小
添加新的标签 docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest 添加一个新的ubuntu:latest镜像标签
获取镜像的详细信息:docker inspect 命令
2.3 搜索镜像: docker search
2.4 删除镜像: docker rmi dl.dockerpool.com:5000/ubuntu 也可以使用镜像ID删除镜像(会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身)当删除的镜像存在容器时,镜像文件无法被删除,可以使用 -f参数强制删除
2.5 创建镜像
方式:基于已有镜像的容器创建,基于本地模板导入,基于Dockerfile创建
(1)基于已有镜像的容器创建:
docker commit [options] CONTAINER [REP]
主要选项为 -a 作者信息 -m 提交信息 -p 提交时暂停容器运行
(2)基于本地模板导入:
2.6 存出和载入镜像
docker save 和 docker load
2.7 上传镜像
docker push 命令上传镜像到仓库
3 容器
3.1 创建容器
新建容器: docker create -it ubuntu:latest
使用docker create 命令新建的容器处于停止状态,
新建并启动容器
docker run ubuntu /bin/echo 'hello world'
docker run -ti ubuntu /bin/bash -t 选项让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开状态
守护态运行 : -d参数
docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done"
3.2 终止容器
docker stop
3.3 进入容器 docker attach ps_names
首先显示容器,docker ps
3.4 删除容器
docker rm [options] ContainerID [CONTAINER....]
其中ContainerId可以使用 docker ps -a 查询出来 -a参数是查询所有的容器(包括未运行的)
3.5 导出容器
docker export CONTAINERId