Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟化方式。Docker的设计宗旨是经过对应用软件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别“一次封装,处处运行”的目的。这里的组件能够是一个应用,也能够是一套服务,甚至可使一个完整的操做系统。docker
- Docker的容器技术能够在一台主机上轻松地为任何应用建立个轻量级的、可移植的、自给自足的容器。经过这种容器打包应用程序,简化了从新部署、调试这些琐碎的重复工做,极大地提升了工做效率。采用Docker容器技术,迁移只须要在新的服务器上启动须要的容器就能够。
- Dockerer容器很快,启动和中止能够在秒级实现,比传统虚拟机要快不少。
- Docker核利用容器来实现相似VM的功能,从而以更加节省的硬件资源提供,使得在一台主机上同时运行数干个Docker容器成为可能。
- Docker 操做方便,还能够经过Dockerfle配置镜像文件,支持灵活的自动化建立和部署。
Docker的镜像是建立容器的基础,相似虚拟机的快照,能够理解为是一个面向Docker容器引擎的只读模板,好比一个镜像能够是一个完整的centos操做系统,也能够是一个安装了MySQL的应用程序,称之为一个镜像。
镜像文件用户能够本身建立和更新现有镜像,也能够从网上下载已经作好的应用镜像直接使用。shell
容器是镜像的另外一个运行实例,是独立运行的一个或一组应用以及他们所必须的运行环境,包括文件系统、系统库类、shell环境等。镜像是只读模板,而容器会给这个只读模板一个额外的可写层。json
仓库是用来集中存放镜像的地方,当本身建立了镜像后,可使用push命令将它上传到公共仓库(Public)或者私有仓库(Private),这样,当其余机器想要使用时,直接下载下来便可使用。仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个库,每一个仓库集中存放某一类镜像,而且使用不一样的标签来区分它们。vim
安装docker有两种方式:其一:使用curl得到docker的安装脚本进行安装;其二:使用docker本身的Yum源来安装。这里以yum源为例安装docker。centos
vim /etc/yum.repos.d/docker.repo [docker-repo] name=Doker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
yum install docker-engine -y
systemctl start docker systemctl enable docker.service #开机自启动
vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com" #官方提供的国内镜像加速器地址 ], "insecure-registries": [] }
systemctl daemon-reload systemctl restart docker
docker version
Docker运行容器前须要本地存在对应的镜像。若是不存在本地镜像,docker就会尝试从默认镜像仓库(官方仓库)https://hub.docker.com下载bash
命令格式:docker search 关键字
例如搜索关键字为lamp的镜像服务器
下载镜像不指定标签,默认下载最新版本的镜像,也能够经过指定的标签下载特定版本的镜像。这里的标签(tag)是用来区分镜像版本的。curl
命令格式:docker pull 仓库名称[:标签]
例以下载镜像nickistre/centos-lamp ide
整个下载过程能够看出,镜像文件由若干层(Layer)组成,咱们称之为AUFS(文件联合系统),是实现增量保存与更新的基础,下载过程当中会输出镜像的各层信息工具
命令格式:docker images 仓库名称[:标签]
例如查看本地全部镜像
REPOSITORY ---镜像属于的仓库
TAG ---镜像的标签信息,标记同一个仓库中不一样镜像
IMAGE ID ---镜像的惟一ID号,惟一标识了该镜像
CREATED ---镜像建立时间
SIZE ---镜像大小
命令格式:docker inspect 镜像ID号
例如获取镜像的详细信息
命令格式:docker tag 名称[:标签] 新名称[:标签]
例如本地镜像 添加新的名称为lamp,新的标签为lamp
命令格式:docker rmi 仓库名称:标签 或者docker rmi 镜像ID号
例如删除镜像lamp:lamp
注意:当一个镜像有多个标签的时候,docker rmi 命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件。但当该镜像只剩下一个标签的时候,此时删除该标签的时候会完全删除该镜像。
使用docker rmi 镜像ID号命令时,必须确保该镜像没有被容器使用才能进行,删除时系统会先删除掉指向该镜像的全部标签,而后删除镜像自己。若是该镜像已经被容器使用,正确的作法是先删除依赖该镜像的全部容器,再删除镜像
存出镜像,也就是将镜像保存成本地文件。
命令格式:docker save -o 存储文件名 存储的镜像
例如将本地的镜像存出为文件lamp
载入镜像,也就是将导出的文件导入到其余机器的镜像库中
命令格式:docker load < 存出的文件 或者docker --input 存出的文件
例如从文件lamp中载入镜像本地镜像库
本地存储的镜像愈来愈多,就须要指定一个专门的地方存放这些镜像-仓库。
命令格式:docker push 仓库名称:标签
例如在公共仓库上成功注册了一个帐号,这个帐号叫作xiang10,新增的镜像的标签为xiang10/lamp:centos7
docker tag nickistre/centos-lamp xiang10/lamp:centos7
成功登录后上传镜像
建立容器就是将镜像加载到到容器,新建立的容器默认处于中止状态,不运行任何程序。
命令格式:docker create [选项] 镜像 运行的程序 -i 让容器对的输入保持打开 -t 让Docker分配一个伪终端
docker ps #查看全部容器的运行状态 docker ps -a #查看最近一次启动的容器的运行状态
能够直接执行docker run命令
其运行过程:
1.检查本地是否存在指定的镜像,当镜像不存在时,会从公共仓库下载;
2.利用镜像建立并启动容器;
3.执行用户指定的应用程序;
4.执行完毕后容器被停止运行
例如建立容器并启动执行一条shell命令
docker run centos /usr/bin/bash -c ls /
但有时候须要在后台持续运行这个容器,就要让docker以守护态在后台运行,能够在docker run命令后添加“-d”选项实现。那么,容器运行的程序就不能结束。
docker run -d centos /usr/bin/bash -c "while true;do echo hello;done"
命令格式:docker start 容器的ID/名称 #启动中止状态的容器 命令格式:docker stop 容器的ID/名称 #停止运行状态的容器
当不进入容器时,容器运行完所执行的程序后会自动中止,为了不这样的状况,咱们须要进入容器执行,且退出容器后,容器并不会中止。
命令格式:docker exec -it 容器的ID/名称 /bin/bash -i 让容器对的输入保持打开 -t 让Docker分配一个伪终端
导出容器,也就是将已经建立好的容器容器导出为文件
命令格式:docker export 容器的ID/名称 > 文件名
例如导出容器到文件centos7tar
导入容器,也就是将导出文件传输到其余机器
命令格式:cat 文件名| docker import - 生成的镜像名称:标签
例如导入文件centos7tar成为本地镜像
将一个已经处于停止状态的容器删除
命令格式:docker rm 容器的ID/名称
若是要删除一个正在运行的容器,能够添加-f选项强制删除,但建议先将容器中止再作删除操做。