安装Docker
Mac 安装地址
关于在Ubuntu、CentOS和Debian系统安装Docker,Docker —— 从入门到实践书里有安装教程
其他系统安装Docker,参考官网
Boot2Docker
Boot2Docker 是一个包含了 VirtualBox 虚拟软件、Docker 程序和Boot2Docker Management Tool的一个集合软件。Boot2Docker Management Tool是一个运行在Mac系统上的轻量级Linux虚拟机。
这个轻量级虚拟机完全运行在内存中,启动很快,体积很小。
通过Boot2Docker安装的Docker相当于运行在一个 VirtualBox 虚拟机中,而客户端运行在Mac OS 上。
(Mac直接安装Docker,不通过Boot2Docker安装感觉起来没什么区别啊?)
Docker 三大组件
仓库
镜像
容器
仓库
Docker 官方维护了一个公共仓库Docker Hub
登录
本地命令:docker login
会有提示输入用户名和密码,一次登录后,会记住登录信息。本地用户目录的 .dockercfg 中将保存用户的认证信息。
搜索
命令为docker search 命令来查找官方仓库中的镜像,并利用docker pull 命令来将它下载到本地。
-s N(仅显示评价为 N 星以上的镜像)
下载命令
私有仓库配置
参考书籍Docker —— 从入门到实践
Docker 镜像
Docker 镜像分层
有3层,分别为:
基础镜像
中间件镜像
应用镜像
获取镜像
|
|
将从 Docker Hub 仓库下载一个符合要求的镜像
完整的命令为:
即从注册服务器registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。
镜像操作
下载镜像完成后,可以使用该镜像了,摘自书中的例子:创建一个容器,让其中运行 bash 应用。
显示本地已有的镜像
命令:docker images
修改镜像:
1.docker commit 来扩展一个镜像
镜像启动容器:
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开
在容器中添加json package:
退出: exit
提交更新后的副本:
ouruser/sinatra:v2为目标镜像的仓库名和 tag 信息,如v2
2.docker build 来创建一个新的镜像
新建一个文件Dockerfile,里面的每一条指令都创建镜像的一层。
Dockerfile 基本的语法是:
使用 # 来注释
FROM 指令告诉 Docker 使用哪个镜像作为基础
接着是维护者的信息
RUN 开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get来安装了一些软件
编写完成 Dockerfile 后可以使用 docker build 来生成镜像。例如:
其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。
改变镜像标签内容
|
|
本地导入镜像:
|
|
镜像上传到远程仓库:
Docker Hub 上完成注册后,可以推送自己的镜像到仓库中
保存镜像到本地文件:
|
|
从导出的本地文件中再加载到本地镜像库:
|
|
移除镜像
|
|
在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。
清理所有未打过标签的本地镜像
Docker 容器
容器是独立运行的一个或一组应用,以及它们的运行态环境。
启动容器
有两种方式:
1.基于镜像新建一个容器并启动
使用docker run 来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
2.将在终止状态(stopped)的容器重新启动
docker start命令,直接将一个已经终止的容器启动运行。可以利用 ps 或 top 来查看当前的进程信息。
查看容器信息
命令:docker ps
可以查看所有的容器及进程
容器在后台运行
普通的docker run命令会在当前宿主机输出结果。
加上-d,此时容器会在后台运行并不会把输出的结果打印到宿主机上面,而是返回一个ID。
|
|
查看输出结果可以用docker logs
里面可以是刚刚返回的ID也可以是NAME
终止容器
使用命令docker stop ID来终止
当Docker容器中指定的应用终结时,容器也自动终止。所以之前通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。
查看终止状态的容器可以用 docker ps -a命令。
重启已经终止的容器
处于终止状态的容器,可以通过 docker start 命令来重新启动。
docker restart 命令会将一个运行态的容器终止,然后再重新启动它。
进入容器
当容器进入后台时,需要进入容器的操作
使用Attach命令:
使用nsenter 命令
nsenter工具在 util-linux 包2.23版本后包含,设备上没有的,需要手动安装。
详细步骤参考书籍Docker —— 从入门到实践
导出容器
导出本地某个容器,使用 docker export 命令:
导入容器
使用docker import从容器快照文件中再导入为镜像:
或者通过指定 URL 或者某个目录来导入,例如:
用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,
也可以使用 docker import 来导入一个容器快照到本地镜像库。
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时可以重新指定标签等元数据信息。
删除容器
使用 docker rm 来删除一个处于终止状态的容器
如果要删除一个运行中的容器,可以添加 -f 参数。
清理所有处于终止状态的容器,使用以下命令:
书籍:
Docker —— 从入门到实践此处有电子书的下载途径