docker基本概念和安装
学习书籍:Docker技术入门与实践
环境: ubuntu14及以上版本)
第一章 初始docker
- docker是一种为应用的开发和部署提供一站式解决方案的linux容器技术
- docker容器很快,启动和停止妙级实现
- docker容器对系统资源需求很少,一台主机可同时运行数千个docker容器
- docker可通过类似git的财政方便用户获取、分发、更新应用镜像
- docker通过dockerfile配置文件来支持灵活的自动化创建和部署机制
第二章 docker三大核心概念介绍及安装
docker镜像
dockder镜像(image)类似于虚拟机镜像,可以理解成一个面向docker引擎的只读模板,可能只是文件系统,也可能是文件系统和应用程序的集合,镜像是创建docker容器的基础(默认使用Docker Hub公共注册服务器中的仓库,也可以配置自定义镜像仓库)
容器
docker容器(Container)类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用,容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的
镜像自身只是只读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变
仓库
docker仓库(repository)类似于代码仓库,是docker集中存放镜像文件的场所(自我理解类似于git仓库)
docker安装
本文以ubuntu14及以上版本的安装为例(其他环境安装有区别,需要另外查资料)
ubuntu14自带安装方式
通过该方式安装docker,安装的版本相对较旧
- apt-get update
- apt-get install -y docker.io
- ln -sf /usr/bin/docker.io /usr/local/bin/docker
- sed -i ‘$acomplete -F _docker docker’ /etc/bash_completion.d/docker
官方源安装最新版本
- apt-get install apt-transport-https
- apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
- sudo bash -c “echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list”
- sudo apt-get update
- apt-get install lxc-docker
- ln -sf /usr/bin/docker /usr/local/bin/docker
镜像
演示从Docker Hub的ubuntu仓库下载一个最新的ubuntu操作系统镜像
获取镜像
- 获取最新镜像: docker pull ubuntu (下载的是ubuntu:latest镜像, 完整指令: docker pull registry.hub.docker.com/ubuntu:latest,即默认从注册服务器registry.hub.docker.com中的ubuntu仓库下载标记为latest的镜像),文件系统由若干层组成,每一层有ID与之对应,是实现增量保存与更新的基础
- 获取指定版本镜像: docker pull ubuntu: 14.04
- 从其它注册服务器仓库下载,如dl.dockerpool.com: docker pull dockerpool.com:5000/ubuntu
- 下载镜像到本地后,开始使用: docker run -t -i ubuntu /bin/bash
查看镜像
- 查看镜像信息: docker images 可以列出本地主机上已有镜像(列出信息中tag字段用于区分同一仓库不同镜像)
- docker tag命令为本地镜像添加新标签(起到引用或别名作用,其实id都指向一个镜像)。如添加ubuntu:latest镜像标签: docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
- 查看docker详细信息: docker inspect dicker_id , 返回json格式消息
- 若只要其中一项内容时,可使用-f指定,如获取镜像的Architecture信息: docker inspect -f {{“.Architecture”}} 550
搜寻镜像
- docker search 搜索远端仓库中的共享镜像,默认搜索Docker Hub官方仓库镜像,用法为docker search TERM,参数为:
- –automated=false 仅显示自动创建的镜像
- –no-trunc=false输出信息不截断显示
- -s, --stars=0 指定仅显示评价为指定星级以上的镜像,例如搜索带mysql关键字的镜像, sudo docker search mysql, 默认按星级评价排序
删除镜像
- docker rmi IMAGE, IMAGE可以是tag或ID, docker rmi tag 只是删除该标签指定的镜像,若有多个标签指向一个id,则其他标签镜像不会受影响,若是id,则会删除所有指向该镜像的tag,然后删除镜像本身,但是当有该镜像创建的容器存在时,镜像文件默认是无法被删除的
- docker rmi -f ubuntu, -f参数强制删除,不推荐,往往造成一些遗留问题(被强制删除的镜像,会生成标签为的临时镜像,并换了新ID,继续存系统);
- 删除已有容器的镜像的正确做法是先删除镜像依赖的所有容器,在删除镜像,如:
1、docker ps -a , 查看本机存在的容器
2、docker rm 容器id ,删除容器id,
3、dicker rmi -f image_id
4、docker images 查看是否已被删除