百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

程序员背锅救星-docker

wptr33 2024-11-22 22:00 11 浏览

程序员背锅救星-docker



一、前言

本篇内容带大家走进docker的世界,从基础到实战,从头到尾讲述docker的概念和使用docker进行环境部署等等一系列“骚”操作~


二、docker概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

就如上述你看到的图片一样,容器的设计理念由码头上的集装箱而来,通过集装箱的标准化、相互隔离实现软件系统依赖的打包与运行隔离。


三、docker的作用

说到这个作用,我先引入一个话题,就是大家在工作中应该遇到过类似的现象,我们在开发环境中测试自己的代码好好的,但是一到测试人员手里,就是自己的孩子认生一样,立马哇哇大哭,搞得我们开发成了背锅侠,而测试最长说的一句话就是:“你这代码有问题呀~”,估计大家的心情都一样,一万只caoni马奔腾而过;

最后检查,竟是环境出现了问题~~~

“他来了他来了”~~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

进入容器操作


七、总结

以上就是我们操作容器全部的基础知识和操作过程,掌握上面的基础,我们可以初步拉取镜像,创建容器并且使用,后面我将为大家介绍容器的制作,制作我们自己的容器,这样才达到开发人员学习容器最终的目的,我们下期见 -《镜像制作大法》。



往期推荐




相关推荐

【推荐】一款开源免费、美观实用的后台管理系统模版

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...

Android架构组件-App架构指南,你还不收藏嘛

本指南适用于那些已经拥有开发Android应用基础知识的开发人员,现在想了解能够开发出更加健壮、优质的应用程序架构。首先需要说明的是:AndroidArchitectureComponents翻...

高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)

使用方法在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可...

flutter系列之:UI layout简介(flutter ui设计)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。...

Android开发基础入门(一):UI与基础控件

Android基础入门前言:...

iOS的布局体系-流式布局MyFlowLayout

iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...

TDesign企业级开源设计系统越发成熟稳定,支持 Vue3 / 小程序

TDesing发展越来越好了,出了好几套组件库,很成熟稳定了,新项目完全可以考虑使用。...

WinForm实现窗体自适应缩放(winform窗口缩放)

众所周知,...

winform项目——仿QQ即时通讯程序03:搭建登录界面

上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析...

App自动化测试|原生app元素定位方法

元素定位方法介绍及应用Appium方法定位原生app元素...

61.C# TableLayoutPanel控件(c# tabcontrol)

摘要TableLayoutPanel在网格中排列内容,提供类似于HTML元素的功能。TableLayoutPanel控件允许你将控件放在网格布局中,而无需精确指定每个控件的位置。其单元格...

想要深入学习Android性能优化?看完这篇直接让你一步到位

...

12个python数据处理常用内置函数(python 的内置函数)

在python数据分析中,经常需要对字符串进行各种处理,例如拼接字符串、检索字符串等。下面我将对python中常用的内置字符串操作函数进行介绍。1.计算字符串的长度-len()函数str1='我爱py...

如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步

假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...

Python入门知识点总结,Python三大数据类型、数据结构、控制流

Python基础的重要性不言而喻,是每一个入门Python学习者所必备的知识点,作为Python入门,这部分知识点显得很庞杂,内容分支很多,大部分同学在刚刚学习时一头雾水。...