软件安装的简化
- 选择所需的软件
- 使用docker hub查找和安装软件
- 从其他来源安装软件
- 了解文件系统的隔离
- 镜像和文件系统的分离
- 使用分层镜像得 特点
- 学习要点归纳
- 安装docker镜像的三种方式
- docker hub和其他注册服务器
- 使用
docker save
和docker load
- 使用Dockerfile构建镜像
- 环境
- win10+虚拟机(centos7)
- centos7 + docker1.13
- 修改了仓库的默认地址为
registry.docker-cn.com
- 笔记
- 仓库名:
- 三部分组成:仓库名+用户名+容器短名,用/隔开
quay.io/dockerinaction/ch3_hello_registry
- 标签:
- 如java的jdk有相应的版本,标签就是用来唯一确定一类软件中的哪一个软件。通常与仓库名结合使用
-
仓库名:函数名
->唯一确定具体软件 -
docker pull registry.docker-cn.com/library/centos:7
(拉取centos7镜像) -
docker pull registry.docker-cn.com/library/centos:6
(拉取centos6镜像) -
docker pull registry.docker-cn.com/library/centos
(缺省版本号,默认拉取latest) -
docker tag
给镜像换标签
- 查找、安装软件
- 镜像的两种发布方式:
- 使用命令行来发布独立系统的镜像(docker push)
- 公开Dockerfile,并使用Docker Hub的持续构建
- 私有docker hub的注册服务器、推送镜像在私有注册服务器、登录授权等在本书的第7章介绍。
- 查找镜像
docker search <应用名>
-
docker search centos
(搜索docker hub索引库,看到类似github的打星等相关信息)
- 删除镜像
docker rmi <镜像名>+版本号
- 版本号缺省,默认删除latest
- 一个例子:
-
docker run -it --rm dockerinaction/ch3_ex2_hunt
(提示输入密码,若密码错误,提示寻找密码线索) -
docker search dockerinaction/*
(根据输出的信息,找到相关镜像,启动容器寻找答案)
- 使用代替服务器
- 注册服务器地址完成格式:
[registyhost/][username/]NAME[:tag]
-
docker pull nginx
(使用默认注册服务器地址下载) -
docker pull registry.docker-cn.com/library/centos:7
(使用代替服务器下载)
- 镜像文件的导入导出
docker pull busybox:latest
docker save -o myfile.tar busybox:latest
-
-o
参数,可制定输出文件为.tar
- 使用
docker save --help
查看更多
docker rmi busybox
-
dcoker load < myfile.tar
或dcoker load -i myfile.tar
- 镜像层实战
- 镜像是由不同的镜像层组成,可以说镜像是很多个镜像层的集合。
- 例子:
docker pull dockerinaction/ch3_myapp
docker pull dockerinacton/ch3_myotherapp
- 拉取镜像的时候是一层一层的下载,只有安装了上层的所有依赖,完成上层的安装,下一层才能开始安装。ch3_myapp和ch3_myotherapp都依赖于镜像java:6,先拉取ch3_myapp再拉取ch3_myotherapp时,可以发现后者的拉取速度要远大于前者。原因是镜像层可以复用,拉取ch3_myapp时已经拉取了java:6层,再docker pull ch3_myotherapp时,就不需要重新拉取java:6
- 拉取镜像时,相同的镜像层可以复用,只需要在第一次pull的时候下载安装,以后就可以复用。
-
docker images
,看到java:6、ch3_myapp、ch3_myotherapp三个镜像
- 分层关系
- 容器文件系统抽象和隔离
- Union文件系统
- Linux MNT命名空间
- chroot
- 分层文件系统及其工具的优点
- 公共层只需要安装一次
- 分层提供了依赖管理和隔离的工具
- 便于构建专业的软件
- Union文件系统的不足
- 不同的文件系统有不同的文件属性、大小、名称和字符。Union需要在不同的文件规则之间进行转换
- Union使用写时复制的模式,内存映射文件的实现较为困难
- 总结
- docker用户可以使用仓库名称来确定他们想通过docker安装的软件
- docker Hub是默认的注册服务器,可以通过网站或docker命令行工具在docker Hub上找到需要的软件
- docker命令行工具可以很方便地通过其他注册服务器或其他形式来分发安装软件
- 镜像仓库配置中会包括注册服务器的主机信息
- docker load 和docker save命令可以将tar档案文件用来加载和保存镜像
- 分发一个项目的Dockerfile可简化用户机器上构建镜像的过程
- 镜像通常和其他镜像都有父子的关联。这些关系构成分层。当我们说,我们已经安装了一个镜像,我们是说已经安装了一个目录镜像,及其依赖的每个镜像层
- 使用分层构建镜像,可重用分层,并可节省分发带宽和机器上的存储空间。