程序员背锅救星-docker
一、前言
本篇内容带大家走进docker
的世界,从基础到实战,从头到尾讲述docker
的概念和使用docker
进行环境部署等等一系列“骚”操作~
二、docker概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
就如上述你看到的图片一样,容器的设计理念由码头上的集装箱而来,通过集装箱的标准化
、相互隔离
实现软件系统依赖的打包与运行隔离。
三、docker的作用
说到这个作用,我先引入一个话题,就是大家在工作中应该遇到过类似的现象,我们在开发环境中测试自己的代码好好的,但是一到测试人员手里,就是自己的孩子认生一样,立马哇哇大哭,搞的我们开发成了背锅侠,而测试最长说的一句话就是:“你这代码有问题呀~”,估计大家的心情都一样,一万只草泥马奔腾而过;最后检查,竟是环境出现了问题~~~
“他来了他来了”~~docker
作为一款解救开发人员的神器出现了,我们可以吧开发环境部署好,直接放在容器中,然后测试拿到这个容器就可以直接使用了,真的是“你好,我好,大家好!”
所以,容器的作用可以分为这么两步:
-
提供一次性的环境。就比如我们上述描述的场景; -
**提供弹性的云服务。**因为 Docker 容器可以随开随关,很适合动态扩容和缩容; -
组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
四、docker中最重要的三要素
这里我们可以使用虚拟机的方式解释这三要素;
Docker镜像就好比我们要安装linux
虚拟机,我们需要centos
镜像,VM
软件等等;
镜像
Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。
这里我们可以看到的是,安装linux
虚拟机,需要centos
的镜像,这里的镜像和我们虚拟机中的镜像可以想象成一种东西;
当我们装了redis,这个就是redis镜像;
镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,我们可以从仓库中下载一个已经做好的镜像,并通过命令直接使用。
仓库
Docker仓库(Repository)是Docker集中存放镜像文件的场所。
这种很类似阿里云镜像库,存放这各种镜像,也很类似于github
,存放着各种各样的代码,我们需要就可以去取;
每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放centos
操作系统镜像的仓库,称为centos
仓库,其中可能包括centos6
和centos7
等不同版本的镜像。
Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式,最大的公开仓库是Docker Hub,存放了数量庞大的镜像;
一般我们自己部署设置的镜像库,会存放在私有仓库进行内存共享,更改和下载以及发布操作;
容器
容器是用镜像创建的运行实例。
每个容器都可以被启动,开始,停止,删除,同时容器之间相互隔离,保证应用运行期间的安全。
这就好比我们在VM
中安装的虚拟机,我们可以使用一个镜像创建不同的实例,比如centos1
、centos2
等等,每个虚拟机互不影响,单独运行;
五、基本命令
镜像相关
关于镜像相关的命令,用的最多的就是拉、删、查、找、传镜像
-
拉取镜像
docker pull <image>
指定标签下载某镜像
docker pull [:TAG]比如我们拉取
centos7
的镜像docker pull centos7
-
查看镜像
列出本地主机上的镜像
docker images REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小
-
搜索镜像
docker search <image>
NAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 OFFICIAL: 是否 docker 官方发布 stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。 AUTOMATED: 自动构建。
-
删除镜像
docker rmi <image ID>
-
上传镜像
docker push NAME[:TAG]
容器相关
-
创建容器
docker start <container_name | container_id>
-
创建并启动容器
docker run -it <container_name | container_id> /bin/bash
一般我们会使用:
docker run -itd --name centos-test centos:centos7
说明:
-
-it
会进入容器的终端 -
-d
后台运行 -
centos-test
容器名以centos-test
命令,不指定会随机去一个字符串; -
centos:centos7
镜像名
-
-
守护(后台)运行
docker run -d <container_name | container_id>
-
查看容器信息
docker ps [-a -q]
-
终止容器
docker stop <container_name | container_id>
-
启动容器
docker start <container_name | container_id>
-
重启容器
docker restart <container_name | container_id>
-
进入容器
docker exec -it <container_name | container_id> /bin/bash
-
删除容器
docker rm [-f] <container_name | container_id>
六、实践
接下来来,我们一步一步操作docker
运行centos7
:
拉取
centos7
镜像
命令:docker pull centos:centos7
创建并启动
centos
容器
命令:docker run -itd --name centos-test centos:centos7
查看容器运行情况
命令:docker ps
进入容器操作
七、总结
以上就是我们操作容器全部的基础知识和操作过程,掌握上面的基础,我们可以初步拉取镜像,创建容器并且使用,后面我将为大家介绍容器的制作,制作我们自己的容器,这样才达到开发人员学习容器最终的目的,我们下期见 -《镜像制作大法》。