docker容器化(一)
DevOps持续交付:
传统模式部署环境:
1.开发写代码(Java语言),写完代码后使用构建工具(Ant,Maven)把代码构建成一个.war包
2.然后开发把.war发送给运维(或者是测试),然后运维把.war部署到TOMCAT的WEB容器
3.启动TOMCAT,然后产品就可以访问以及测试了
4.运维同步开发或者测试,反馈环境已部署ok,可以开始测试
现在模式:
从代码提交到环境部署,全部都是自动化的模式。中间减少了人为沟通的成本,这个模式的流程具体总结如下:
1.开发提交代码到Gitlab,触发Jenkins自动使用构建工具(Ant,Maven)来构建成.war包
2.构建.war成功后,通过ssh服务把.war自动发送到TOMCAT的WEBAPPS目录下
3.自动启动TOMCAT的服务
4.TOMCAT服务启动成功后,通过钉钉(企业微信)自动告诉相关人员,环境已部署好,可以开始测试
技术栈:Git,GitLab,Docker,Jenkins,K8S,云服务器
Docker解决了什么?
微服务架构最初是由几个顶级的架构师提出的一种新的架构模式,但是这种新的架构模式非常具备前瞻性,但在落地的过程中由于环境部署的问题,迟迟不能在企业落地。Docker以及K8S容器化遍排技术的开源和发展,解决了微服务架构最后一公里的技术问题(环境部署)。
主流编程语言:
Java:企业级主流的语言,业内阿里巴巴所有的产品都是Java
Python:主流的开发语言,最早是豆瓣使用,后来各个互联网公司使用,也是Google四大语言之一
Go:Google发明的语言,被称为21世纪的C语言,Go语言非常优秀但是一直不温不火,随着Google开源了K8S,Go语言也迅速的占据了市场,Go语言主要应用于底层微服务,容器化开发,其中业内的字节跳动要求测试开发都得具备Go语言的基础开发能力。
Net:微软主导的语言,企业级语言
C/C++:底层开发语言,如操作系统等都是使用C/C++的语言开发的,都是高手使用的语言
PHP:轻量级语言,适合几个人的研发团队来使用,不适合大型研发使用
JavaScript:前端核心语言,必须掌握的,前端的三大框架(Vue,React,AngleJS)都是使用JavaScript来开发的
主流操作系统:windows,Linux,unix
科技公司:
Microsoft
Oracle
苹果
阿里巴巴:阿里云+
腾讯
华为
docker安装流程:
1、下载docker,根据流程提示安装;
2、安装完成后,下载wsl文件,并安装;
3、以管理员身份运行 PowerShell ,执行以下命令:
wsl --install
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
4、根据提示进行操作,显示如下界面即表示安装成功;
5、安装好之后在控制台输入命令:docker --version 出现版本信息就是好了。
docker的术语:
镜像image:
容器container:一个镜像运行后的程序就是容器
获取image的步骤:
a、docker pull imageName
b、在docker hub网站搜索是否存在imageaName
c、存在,就获取下来,不存在,就报错
一、docker基础操作命令:
1、获取镜像:docker pull hello-world
2、查看所有镜像:docker images
3、查看具体镜像: docker images | grep hello-world(mac操作系统)
docker images | findstr hello-world(windows操作系统)
hello-word: 镜像名称,latest: 镜像版本, feb5d9fea6a5:镜像id, 7 months ago:镜像发布的时间, 13.3kb:镜像大小
4、运行获取的镜像:docker run --rm hello-world
docker容器式的环境更可以看成是⼀个沙盒的环境,在这个沙盒的环境中,我们可以搭建对应的环境,⽐如安装⼀个centos的操作系统。下⾯详细的演示下获取centos镜像的过程,具体指令如下:
获取linux的镜像:docker pull centos:7.8.2003
只获取一个linux的镜像:docker images | findstr centos
运行获取到的linux的镜像:docker run --rm -it centos:7.8.2003 bash
5、查看镜像的详细信息:docker image inspect imageID
先获取到要查看镜像的 id
运行镜像:
获取docker的镜像后,就可以运⾏对应的docker的镜像信息了,运⾏的命令为run,具体指令总结如下:
-it:开启交互式的命令
--rm:容器退出时删除容器的记录信息
rmi:删除镜像
--name:指定容器的名称
-d:后台⽅式运⾏容器
查看容器的记录:每个镜像运⾏后,都会在容器中存在⼀条记录的信息,查询的指令为: 6、docker ps -a
docker ps -a | findstr centos #查看运行的容器记录信息
如果每次运⾏镜像不想在容器中记录它的信息,那么就可以带上--rm,下⾯具体演示下它的使⽤:
依据名字来查看容器运行的记录信息:
7、修改镜像名称:docker tag imageID 修改后的镜像名称
例如将hello-world改成hello
二、删除镜像
2.1docker的镜像未被容器运⾏
1、根据name删除镜像:docker rmi imageName
2、根据id删除镜像:docker rmi imageID
2.2 docker的镜像被容器运⾏
如果⼀个镜像被容器运⾏了,那么删除镜像的步骤可以总结为:
a、得到容器的ID信息
b、删除关联的容器ID
c、使⽤name或者ID来删除镜像
以删除nginx镜像为例,我们首先获取nginx,
nginx:反向代理的中间件,俄罗斯人发明的
-p:指定端口
所有的服务都是有端口的,nginx的默认端口是80
1、启动nginx: docker run -p 80:80 nginx
2、查看所有运行的容器记录:docker ps -a
docker ps -a | findstr name
3、查看容器的端口:docker port containerID
在浏览器访问nginx
4、删除nginx的镜像(这时镜像在运行,会发现删除不掉)
2.3容器的停止和启动
1、容器停止:docker stop containerID
2、容器启动:docker start containerID
三、导出/导入镜像
导入导出的场景:
a.比go如开发在本地构建一个镜像
b.开发导出
c.把文件发送给测试
d.测试导入到docker
e.测试运行镜像,环境ok,开始测试
1.导出镜像:docker image save imageName -o 路径/nginx.taz
导出命令:docker image save nginx -o C:\Users\EDY\Desktop\nginx.taz
2.导入镜像: docker image load -i nginx.taz
先把nginx导出到桌面,在本地删除nginx镜像,然后执行导入命令