25.1 docker简介
25.2 安装docker
25.3 镜像管理
25.4 通过容器创建镜像
25.1 Docker简介
Docker是一种容器技术,它可以快速部署环境。
其官网 www.docker.com github https://github.com/docker/docker.github.io
Docker是开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便。
它由go语言编写,基于apache2.0协议发布。基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现
自2013年开始,近些年发展迅猛,docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式,当前最新稳定版为17.09 参考 http://blog.csdn.net/chenhaifeng2016/article/details/68062414
Docker和传统的虚拟化比较
传统虚拟化和docker都是建立在有硬件支持的物理机上的操作系统上。传统虚拟化在操作系统上建立Hypervisor来驱动虚拟化。docker 上的docker engine 也Hypervisor类似,也是用来驱动虚拟化的。不同的是docker是不需要安装客户虚拟机来安装应用或者服务
。
- Docker的优势
- 启动非常快,秒级实现
- 资源利用率高,一台高配置服务器可以跑上千个docker容器
- 更快的交付和部署,一次创建和配置后,可以在任意地方运行
- 内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率
- 易迁移,平台依赖性不强
Docker核心概念
镜像
,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。容器
,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。仓库
,存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub hub.docker.com 国内公开仓库 dockerpool.com
25.2 安装Docker
安装docker有两种方法
1.下载官方最新的源并下载最新的包
1 | [root@kun01 ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo |
2.下载网址的rpm包上传到机器上
https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/25docker/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
1 | [root@kun01 src]# yum install -y container-selinux |
启动docker服务
1 | [root@kun01 src]# systemctl start docker |
25.3 镜像管理
下载镜像
格式:docker pull 镜像名
1
[root@kun01 src]# docker pull centos
由于下载国外的镜像慢 这里可以使用国内的加速器 重启服务再下载1
2
3
4
5[root@kun01 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}
1 | [root@kun01 ~]# systemctl restart docker |
查看本地的所有镜像
格式:docker images
1
2
3[root@kun01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 6 weeks ago 200MB
搜索指定的镜像
格式:docker search 镜像名
1
[root@kun01 ~]# docker search jumpserver
给镜像改名字 原来的镜像还在
格式:docker tag 镜像名 新镜像名[:备注]
1
2
3
4
5
6[root@kun01 ~]# docker tag centos kun_centos
[root@kun01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 6 weeks ago 200MB
kun_centos latest 5182e96772bf 6 weeks ago 200MB
centos和 kun_centos名字不一样 但是 IMAGE ID
是一致的,它们是同一个镜像
也可以添加备注标签1
2
3
4
5
6
7[root@kun01 ~]# docker tag centos kun_centos:180918
[root@kun01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 6 weeks ago 200MB
kun_centos 180918 5182e96772bf 6 weeks ago 200MB
kun_centos latest 5182e96772bf 6 weeks ago 200MB
:180918
指TAG的备注信息
把镜像启动为容器
格式:docker run -itd 镜像名
1
2[root@kun01 ~]# docker run -itd centos
cdc6436e64ff3773c48d02f9847473326a3001a526db9808aecdfdff7e7dd9da
-i
表示让容器的标准输入打开-t
表示分配一个伪终端-d
表示后台启动,要把-i -t -d 放到镜像名字前面
查看运行的容器
格式:docker ps
1
2
3[root@kun01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdc6436e64ff centos "/bin/bash" About a minute ago Up About a minute
查看全部容器 包括停止的容器
格式:docker ps -a
1
[root@kun01 ~]# docker ps -a
删除指定镜像
格式:docker rmi 镜像名[:备注]/ID
1
2
3
4
5[root@kun01 ~]# docker rmi kun_centos
Untagged: kun_centos:latest
[root@kun01 ~]# docker rmi kun_centos:180918
Untagged: kun_centos:180918
当镜像有备注时,删除镜像也要带上备注,否则默认删除带latest
的镜像,也可以指定image id
来删除镜像来把其他改名的镜像一同删除1
[root@kun01 ~]# docker rmi 5182e96772bf
25.4 Docker通过容器创建镜像
可以通过容器来自定义镜像 来创建自己的镜像
进入启动的容器里
格式:docker exec -it 容器ip bash
1
[root@kun01 ~]# docker exec -it cdc643 bash
容器id可以用docker ps
查看,最后面的bash
为进入容器后我们要执行的命令,这样就可以打开一个终端。
进入到该容器中,我们做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像。这里我们安装net-tools工具 并按Ctrl+D
退出容器1
[root@cdc6436e64ff /]# yum install -y net-tools
容器创建新镜像
格式:docker commit -m "备注信息" [-a "作者名字"] image IP 新镜像名字
1
[root@kun01 ~]# docker commit -m "install net-tools" -a "kun" cdc6436e centos_net
-m
加一些改动信息-a
指定作者相关信息 ,可以不加cdc6436e
这一串为容器id,再后面为新镜像的名字
1 | [root@kun01 ~]# docker images |
已经多了一个centos_net得镜像