docker(1)
一、DevOps持续交付:
传统模式部署环境:
1、开发写代码(Java语言),写完代码后使用构建工具(Ant,Maven)把代码构建成一个.war包
2、开发把.war包发送给运维(或者是测试),然后运维把.war部署到TOMCAT这个WEB容器
3、启动TOMCAT,然后产品就可以访问以及可以测试了
4、运维同步开发或者测试,反馈环境已部署OK,可以开始测试
现在模式:
从代码提交到环境部署,全部都是自动化的模式,中间减少了人为的沟通成本,这个模式的流程具体总结如下:
1、开发提交代码到Git,触发Jenkins自动使用构建工具(Ant,Maven)来构建成.war包
2、构建.war包成功后,通过ssh服务把.war自动发送到TOMCAT的webapps目录
3、自动的启动TOMCAT服务
4、TOMCAT服务启动成功后,通过钉钉(企业微信)自动告诉相关的人,环境部署已OK,可以开始测试
(传统模式 、现在模式部署环境 面试可能会问)
技术栈:
Git,GitLab,Docker,Jenkins,K8S,云服务器
二、Docker解决了什么?
Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机,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下载与安装
见环境搭建笔记
查看docker版本
出现以下画面 则表示docker环境已经ok

术语:
镜像image: win7 (同步 获取:docker pull)
容器container :一个镜像运行后的程序就是容器
https://hub.docker.com/_/hello-world 镜像平台
5.1.获取镜像
docker pull 镜像名称
(获取镜像都是从docker hub镜像平台 获取的)

-
docker pull imageName(镜像名称)
-
在docker hub网站搜索是否存在imageName
-
存在 就获取下来 不存在就报错
5.2查看所有镜像
docker images
5.3过滤查看镜像:
docker images | grep 镜像名称 (mac)
docker images | findstr 镜像名称 (windows)
5.4运行镜像
docker run --rm 镜像名称

例: 获取Linux镜像
docker pull centos:7.8.2003
冒号后面是它的版本

运行镜像
docker run --rm -it 名称 版本
获取docker的镜像后,就可以运⾏对应的docker的镜像信息了,运⾏的命令为run,具体指令总结如下:
-
-it:开启交互式的命令 (命令行模式)
-
--rm:容器退出时删除容器的记录信息
-
--name:指定容器的名称
-
-d:后台⽅式运⾏容器
运行linux镜像:
docker run --rm -it centos:7.8.2003 bash (指定名称和版本)

给容器再定义一个名称(以centos为例)
--name 后面跟名字 (centos的名称为linux)

5.5查看所有运行容器的运行记录:
docker ps -a
(如果运行镜像命令中带着--rm ,退出镜像后就搜索不到记录。
如果当前处于运行容器中 我们需要查看记录 可以重新打开一个cmd 来查看容器的运行记录)
通过过滤名称 查看容器运行的记录信息
docker ps -a | findstr 名称

图中的container id 是容器id,每运行一次容器就会有一次记录,有一个新的容器id
5.6只显示镜像id
docker images -q
5.7根据id查看镜像的具体信息
docker image inspect 镜像id
5.8镜像修改(复制一份 然后修改复制出来的镜像的名称)
docker tag imageID 修改后的镜像名称
5.9.1、docker的镜像未被容器运行
根据name删除镜像:
docker rmi 镜像名称
根据id删除镜像:
docker rmi 镜像id

注意:镜像id 一致的时候不能用id删除成功(例如我们前面修改名字时复制出来的镜像 ,他们的id是一样的)

-
得到容器的ID信息
- 停止容器
-
删除关联的容器ID
-
使⽤name或者ID来删除镜像
具体步骤如下:
1、运行nginx 2、查看容器的记录 3、在浏览器访问nginx 4、删除nginx的镜像 5、停止nginx的运行 6、删除nginx的容器记录 7、删除nginx的镜像
第一步:运行nginx (nginx是一个服务 ,运行需要指定端口,所以需要先获取到端口)
容器id的获取方式:
1、docker ps -a(查看容器的运行记录)
2、container id 就是容器id


运行nginx
docker run -p 80:80 nginx
所有的服务,都是有端口的。nginx的默认端口是80
第一个80 是电脑的80端口要开放 第二个80是服务器的80端口要开放
-p:指定运行容器的端口

第三步:在浏览器访问nginx

第四步:删除nginx的镜像
这时容器是在运行中的,肯定是删除镜像会有报错 无法删除,这时我们执行下面的步骤,先停止容器的运行,再删除容器的记录,最后删除容器就可以了
第五步:停止nginx容器的运行
docker stop containerID(容器id)
第六步:删除nginx的容器记录
docker ps -a 查看到容器的运行记录 并且获取到容器id
docker rm 容器id 通过容器id删除容器记录 注意:删除容器命令是rm,删除镜像命令是rmi

第七步 :删除nginx的镜像 (这一步不操作,否则还要获取一个镜像,比较费时间)
docker rmi 名称/镜像id
docker port 容器id
容器的停止和启动
docker stop containerID(容器id)
docker start containerID(容器id)

5.10导入导出的场景:
1、比如开发在本地构建一个镜像
2、开发导出
3、把文件发送给测试
4、测试导入到docker
5、测试运行镜像、环境ok、 开始测试
导出:
docker image save 镜像名称 -o 路径/镜像名称.taz


浙公网安备 33010602011771号