1. 简介 在官网我们可以看到这句
Build safer, share wider, run faster.
docker是一个容器技术,无疑是给了我们很多的便利: 便利1: build safer ,运行环境保持一致,更快更轻松迁移
开发的时候,我们在本机测试环境可以运行,但是到生产环境却无法运行。 比如一个Go的web程序,这里涉及到go、redis、mysql等软件环境。当这些的某一项版本不一致的时候,可能就会导致程序无法运行。Docker则将程序以及使用软件环境直接打包在一起 ,无论在哪个机器上都保证了环境版本的一致。
便利2:run faster ,对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源
由于服务器其他程序出错,导致自己程序出错 我们在公司所写的程序,可能会和其他人共用一个服务器,所以我们就要保证我们程序不会被其他程序所影响,这里就要做一个隔离的操作了。Docker是进程的隔离,很好地解决了环境隔离的问题,别人程序不会影响到自己的程序。
便利3: share wider ,通过一个镜像可以复制N个环境一致的容器
公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器 在没有Docker的情况下,要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,就会出现各种问题,最后部署地头皮发麻。用Docker的话,我只需要将程序打包到镜像,你要多少台服务,我就给你跑多少容器,极大地提高了部署效率。
2. Docker 与虚拟机区别
| 传统虚拟机 | Docker容器 |
---|
磁盘占用 | 几个GB到几十个GB左右 | 几十MB到几百MB左右 | CPU内存占用 | 虚拟操作系统非常占用CPU和内存 | Docker引擎占用极低 | 启动速度 | (从开机到运行项目)几分钟 | (从开启容器到运行项目)几秒 | 安装管理 | 需要专门的运维技术 | 安装、管理方便 | 应用部署 | 每次部署都费时费力 | 从第二次部署开始轻松简捷 | 耦合性 | 多个应用服务安装到一起,容易互相影响 | 每个应用服务一个容器,达成隔离 | 系统依赖 | 无 | 需求相同或相似的内核,目前推荐是Linux |
我们拿内存举例子 3. Docker 核心架构镜像: 一个镜像代表一个应用环境,他是一个只读的文件,如 mysql镜像,redis镜像,nginx镜像等
容器: 镜像每次运行之后就是产生一个容器,就是正在运行的镜像,特点就是可读可写
仓库: 用来存放镜像的位置,是镜像下载和上传的位置
dockerFile: docker生成镜像配置文件,用来书写自定义镜像的一些配置
tar: 一个对镜像打包的文件,日后可以还原成镜像
4. Docker 换源我们知道docker默认不是国内的镜像源的,所以我们要换一个国内源头。 sudo vim /etc/docker/daemon.json(如果不存在则创建) 填入一下内容 {
"registry-mirrors":[
"http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com", "http://registry."
] , "insecure-registries":[
"docker.mirrors.ustc.edu.cn", "registry."
]} 重启服务 service restart docker 在这里换源 然后重启服务 5. 简单例子docker run hello-world 当我们运行这条命令的时候,这里会显示本地没有这个镜像,就会去拉取这个镜像
然后就成功运行了
docker images docker ps -a
|