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

程序员背锅救星-docker

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

程序员背锅救星-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

进入容器操作


七、总结

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



往期推荐




相关推荐

python数据容器之列表、元组、字符串

数据容器分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)list#字面量[元素1,元素2,元素3,……]...

深入理解 PYTHON 虚拟机:令人拍案叫绝的字节码设计

深入理解PYTHON虚拟机:令人拍案叫绝的字节码设计在本篇文章当中主要给大家介绍cpython虚拟机对于字节码的设计以及在调试过程当中一个比较重要的字段co_lnotab的设计原理!PYT...

Python快速学习第一天!

第一天:Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言一、运行Python:1、在交互式环境下,直接输入Python进入Python编程环境[root@tanggao/]#...

Java 程序员的第一套Python代码

选择的Web组件是Python里面的Django,这不一定是一个最佳的框架或者最快的框架,当时他应该算是一个最成熟的框架。...

Python 中 必须掌握的 20 个核心函数及其含义,不允许你不会

以下是Python中必须掌握的20个核心函数及其含义...

Python代码:按和值奇偶比对号码进行组合

Python代码:按和值奇偶比对号码进行组合不少朋友在选定号码以后,会按照一定的和值来组号,比如大乐透常见和值有626372737481108116等我们不用固定在一个数上,我们可以给定...

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

Python强大的内置模块collections

1.模块说明collections是Python的一个内置模块,所谓内置模块的意思是指Python内部封装好的模块,无需安装即可直接使用。...

Python自动化办公应用学习笔记31—全局变量和局部变量

一个Python程序中的变量包括两类:全局变量和局部变量。一、全局变量·...

精通Python可视化爬虫:Selenium实战全攻略

在数据驱动的时代,爬虫技术成为获取信息的强大武器。而Python作为编程界的“瑞士军刀”,搭配Selenium库,更是让我们在动态网页抓取领域如鱼得水。本文将带你深入探索PythonSelenium...

Python中的数据类型操作

...

Python教程(二十五):装饰器–函数的高级用法

今天您将学习什么...

玩转Python列表/字典:增删改查与高效遍历技巧

为什么列表和字典是Python的灵魂?你是否遇到过这样的场景?想存储学生成绩,用列表却发现查找某个学生的分数像大海捞针?用字典存储购物车商品,却不知道如何高效批量修改价格?遍历数据时,传统循环写得...

Python列表操作

Python添加列表4分钟阅读在Python操作列表有各种方法。例如–简单地将一个列表的元素附加到...

充分利用Python多进程提高并发

在计算机编程中,我们经常需要同时执行多个任务。然而,传统的单线程方式无法充分利用计算机的多核处理器,导致程序的执行效率低下。Python中的多进程编程技术可以帮助我们解决这个问题,通过同时运行多个进程...