一、定义
- 官方定义:Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由 Docker Inc. 公司 前 dotC1oud公司, PaaS市场中的老牌提供商)的团队编写,基于 Apache 2.0开源授权协议发行。
- 程序员能理解的定义:Docker是Docker Inc. 公司开源的一个基于Linux技术构建容器的容器引擎,其源代码在GitHub上,基于Go语言开发并遵从Apache 2.0协议;
- 普通人能理解的定义:“没有集装箱,就不会有全球化。”而Docker就是IT领域里改变世界的“集装箱”;
- 圈里人总结:Docker是一套以容器技术为核心的IT标准化构建体系。它不仅仅是一项技术,更不仅仅是一家公司,Docker必将改变整个IT世界,“Build Ship Run”。
二、优势
- 对开发人员来说:Docker提供了简单快速的隔离环境,无需再为配置环境操心,让程序跑到哪都一样;
- 对运维人员来说:Docker可以快速构建出一整套无状态分布式基础设施,使得运维工作可以通过程序化的脚本来完成;
- 对业务人员来说:从每月或每周才能发布的新版本到只需1小时就能发布完毕,迅速满足用户新需求;
- 标准化应用发布:Docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
- 节约时间:快速部署和启动,VM启动一般是分钟级,Docker容器启动是秒级;
- 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
- 节约成本:以前一个虚拟机至少需要几个G的磁盘空间,Docker容器可以减少到MB级;
- 方便持续集成:通过与代码进行关联使持续集成非常方便;
- 可以作为集群系统的轻量主机或节点:在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。
三、docker的基本命令
1.卸载旧的docker
方式一:Rpm方式查询卸载
查找已经安装docker
# rpm -qa | grep -i docker
卸载docker
# rpm -e [module1][module2][.....]
方式二:yum方式查询卸载
查找已经安装docker
# yum list installed | grep -i docker
yum方式卸载docker
# yum -remove
2.安装docker
#yum install -y docker
3.检查安装是否成功
#docker version
4. 设置镜像加速器
安装完成后修改 /etc/docker/daemon.json :
{
"registry-mirrors":["https://uulfe4bd.mirror.aliyuncs.com"]
}
5.启动docker
# systemctl start docker //centos7及以后版本
# service docker start //centos6及之前的版本
6.获取CentOS镜像(使用阿里云CentOS的镜像)
在 https://dev.aliyun.com/list.html 上 搜索 centos7,找到纯净版(也就是centos7的基础镜像),拿到地址:
# docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7
7.确认 CentOS 镜像已经被获取
# docker images registry.cn-hangzhou.aliyuncs.com/1hpc/centos
8.创建docker 容器(可以根据一个镜像创建多个容器)
# docker run -tid 镜像ID /bin/bash //非centos7
# docker run -tid 镜像ID /usr/sbin/init //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题
9.查看容器列表
# docker ps [option]
# docker ps -a
10.重命名容器名称
# docker rename old容器名 new容器名
11.停止容器
# docker stop 容器名称
12.进入容器
# docker exec -it 容器名称 /bin/bash
13.退出容器
#exit
14.删除容器
# docker rm 容器名称
15.删除镜像
# docker rmi 镜像ID
16.Docker文件拷贝(容器<=>docker)
# docker cp 原路径 docker容器名:docker容器路径(系统=》docker)
# 例如:docker cp MySQL-server-5.6.38-1.el7.x86_64.rpm firstMain:/root/
# docker cp docker容器名:docker容器路径 原路径(docker=》系统)
# 例如:docker cp firstMain:/etc/my.cnf /etc/my.cnf
17.查看docker容器的IP地址
# docker inspect 容器名 | grep IPAddress