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

Google

苹果

Facebook

阿里巴巴:阿里云+

腾讯

华为

 

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的镜像(这时镜像在运行,会发现删除不掉)

 

 5、停止nginx的运行(docker stop containerID)

6、删除nginx的容器记录(删除之后再查看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镜像,然后执行导入命令

 

posted @ 2022-05-06 17:11  lm970418  阅读(150)  评论(0编辑  收藏  举报