在以前的学习中,我知道了docker的三大组件分别是----镜像,容器,仓库。了解了这三个组件也就初步理解了docker。因此我学习了这三个组件,并记录下来。php
docker在运行一个容器时须要本地存在相对应的镜像,执行流程大体是这样的:mysql
经过docker pull来从镜像仓库获取镜像:linux
若是官方仓库注册服务器下载速度太慢,咱们能够从其余仓库下载,这个时候由于不是从默认的注册仓库下载,因此咱们须要显式的声明下载仓库地址:nginx
经过上面命令能够查看本地已经下载的镜像文件sql
从上面的信息中,咱们能够得到:docker
TAG:用来标记来自同一仓库的不一样镜像,好比 Ubuntu仓库中中有多个镜像,经过TAG来区分版本。若是不记得具体的版本了,默认用latest标记信息json
使用下载的镜像启动容器bootstrap
在容器中增长json和gem应用ubuntu
-m 来指定提交的说明信息,跟咱们使用的版本控制工具同样;
-a 能够指定更新的用户信息;以后是用来建立镜像的容器的 ID;
最后指定目标镜像的仓库名和 tag 信息。
建立成功后会返回这个镜像的 ID 信息。
咱们可使用docker images查看新建立的镜像。
当在一个团队中分享新建立的镜像时,咱们可使用Dockerfile来解决这个团队分享问题。
Dockerfile包含一些怎样建立镜像的指令。
新建一个目录和一个Dockerfile:
经过#来进行注释
FROM指令告诉Docker使用哪一个镜像来做为基础镜像
接着是维护者的信息
RUN开头的指令会在建立中运行。好比安装一个软件包
另外,ADD 命令是复制本地文件到镜像;EXPOSE 命令来向外部开放端口;CMD 命令来描述容器启动后运行的程序等。
编写完Dockerfile后经过docker build来建立生成镜像。
build 进程在执行操做。它要作的第一件事情就是上传这个 Dockerfile 内容,由于全部的操做都要依据Dockerfile 来进行。Docker指令被按条执行,每一步建立一个新的容器,在容器中执行指令并提交修改,当全部指令执行完成后,返回最终id。
咱们能够经过docker tag来修改镜像的标签。通过docker push将建立的镜像上传到仓库中进行分享。
将镜像导出到本地,可使用docker save命令
使用docker rmi命令删除本地的镜像
注意:
容器是独立运行的一套或者一组应用以及他们的运行态环境。虚拟机能够理解为模拟运行的一整套操做系统(提供运行态环境和其余系统环境)和运行在上面的应用。因此容器相较于虚拟机来讲,显得很是轻量级,启动速度也是以秒级计算的。
容器启动有两种形式:
启动容器命令用docker run来实现,以下面的例子:
当在执行docker run来建立一个容器时,docker的流程是:
那么怎么启动一个以前已经终止的容器呢?咱们能够利用docker start命令来将一个终止的容器从新启动起来。
容器的核心为所执行的应用程序,所须要的资源都是应用程序运行所必需的。在与容器交互的伪终端中咱们能够经过ps或者top命令进行查看容器中进程的信息。
咱们想要让一个容器在后台以守护态形式运行。能够在执行docker run命令时增长-d参数。
想要查看守护态容器在后台输出的信息,但是使用docker logs进行查看:
当加上-d运行容器时,容器以守护态形式进行在后台执行,但有时候咱们想要进入到容器中进行工做,应该怎么实现呢??
1.咱们可使用docker自带的指令docker attach
2. nsenter命令
咱们能够经过nsenter命令进入容器,而是用nsenter命令须要安装nsenter工具,安装步骤以下:
为了链接到容器,咱们须要知道容器的第一个进程的PID,经过下面方法得到:
当咱们须要中止一个正在执行的容器时,使用docker stop指令。
若是该容器中指定的应用终止时,容器也会自动终止。好比上面咱们让容器运行一个伪终端与用户进行交互,当经过exit退出伪终端时,这个容器也自动终止了。
若是想让一个运行态的容器终止后从新启动,咱们可使用docker restart指令。
导出
docker中想要对容器进行备份导出也是很是简单的,能够经过docker export
导入
可使用docker import指令将容器快照导入为镜像。
docker load是用来导入镜像存储文件到本地镜像库;docker import是导入一个容器快照到本地镜像库。区别在于容器快照文件将会丢弃全部历史记录和元数据信息(即容器当时的快照状态),而镜像文件将保存完整记录,体积更大。
当咱们想要删除一个容器时,可使用docker rm指令来删除一个终止状态的容器。若是咱们想要删除一个正在运行的状态,能够加上-f参数。
仓库就是存放镜像的地方。
目前 Docker 官方维护了一个公共仓库 Docker Hub (https://hub.docker.com/) ,其中已经包括了超过 15000 的镜像。大部分需求,均可以经过在 Docker Hub 中直接下载镜像来实现。
经过docker login指令来输入用户名,密码和邮箱后完成注册和登陆。用户的认证信息保存在本地的.dockercfg。
咱们想要查找官方仓库中有哪些咱们须要的镜像,能够经过docker search指令实现,并经过docker pull下载到本地镜像仓库中。
以上~~