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

一文详解Docker轻量级虚拟化,镜像和容器

wptr33 2024-12-11 17:29 14 浏览

什么是虚拟化技术?

对于一个服务器来说,大多数时候资源都是闲置状态,并没有得到充分利用。所以,对于一些初创公司来说,还没有稳定业务,就自建机房,配置大量服务器,还有高昂的运维成本。

因此,现在大多数公司在初期都将业务放到云端,需要多少资源,就租用相应规模的服务器。云服务提供商会将服务器划分成多份,并且相互隔离,这就是虚拟化技术。

比如,刚毕业的学生,开始工资不高,不仅无法买房,也租不起大的房子,很多选择合租。房东将整个房子划分成几个单间,分别出租,这也类似于虚拟化的原理。

什么是Docker?

Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。

源代码托管在Github上,并遵从Apache2.0协议。

Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

简单来说:Docker就是一种快速解决生产问题的一种技术手段。

Docker是容器的一种,而容器不仅仅是Docker。

早期的虚拟化比如VMWare虚拟机,一个虚拟机可以同时运行多个操作系统。但是,每个虚拟机都要虚拟化单独的硬件资源,这样,就会消耗更多的资源,主服务器可以虚拟化出的独立空间就越小。

而容器技术最显著的特点是所有容器都可以共有主服务器的硬件资源,这样就使得容器更加轻量化,启动速度也更快。但是Docker只能支持Linux系统,所有容器都共用一个Linux内核。

容器:顾名思义,就是可以装物品的东西。每个容器可以按照我们的需求装物品,不同容器间相互隔离,携带方便。比如,一家人外出旅行,每个人都在自己的旅行包装上自己需要的生活物品。

或者说生活中很痛苦的事情就是电脑系统重装,要重复配置各种软件,但是只要提前制作一个系统盘,把常用的软件提前安装好,重装系统后自动包括所有的软件。

在云平台上,容器装载的物品就是不同应用。比如,公司在A云平台部署了自己的项目,现在发现B云平台价格更加优惠,性能也更好,直接将A云平台容器打包切换到B云平台,而不需要重复配置环境,安装软件。

ubuntu安装Docker

sudo apt install docker.io
docker --version

注册Docker账号

docker官网:

doker加速器:在国内使用docker的官方镜像源,会因为网络的原因,造成无法下载,或者一直处于超时,所以我们使用 daocloud 的方法进行加速配置。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

查看国内源:

Docker镜像

Docker镜像是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署。

通过 docker search ubuntu 查找镜像:

如果获取镜像具体版本可以官网上搜索Ubuntu,点击Tags,在后面搜索版本号:

docker pull ubuntu:20.04     # 拉取镜像
docker images                      # 列出本地所有镜像

删除镜像:

docker image rm nginx
docker rmi django    # 简写形式

镜像资源改名操作:docker tag ubuntu:20.04 myubuntu:1.0

该操作会保留原有镜像,不需要可以自行删除。

压缩镜像,以后用到直接解压:docker save -o ubuntu.tar ubuntu

导入ubuntu.tar压缩包:docker load -i ubuntu.tar

查看指定镜像历史:docker image history ubuntu:20.04

容器命令

利用ubuntu20.04镜像创建一个名为myrq的容器,并进入容器,执行/bin/bash:

docker run -it --name myrq ubuntu:20.04

exit退出容器:

利用镜像ubuntu:20.04创建一个容器:docker create -it ubuntu:20.04

启动容器:docker start 容器

停止容器:docker stop 容器

重启容器:docker restart 容器

列出本地所有容器:docker ps -a

创建并启动一个容器:docker run -itd ubuntu:20.04

进入容器:docker attach 容器

挂起容器:先按Ctrl-p,再按Ctrl-q

在容器中执行命令:docker exec 容器 命令

删除容器(先关闭容器):docker rm 容器

将容器CONTAINER导出到本地文件xxx.tar中:docker export -o xxx.tar 容器

将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag:docker import xxx.tar image_name:tag

通过容器生成的镜像创建容器:run -it --name myrq4 ubuntu:1.0 /bin/bash

查看所有容器的统计信息,包括CPU、内存、存储、网络等信息:docker stats

在本地和容器间复制文件:docker cp xxx CONTAINER:xxx docker cp CONTAINER:xxx xxx

重命名容器:docker rename CONTAINER1 CONTAINER2

删除所有已停止容器:docker container prune

批量删除所有容器,先用命令列出所有容器id并赋值给变量a:

强制删除所有容器:

# run.sh
a=$(docker ps -a -q)
docker rm -f $a

相关推荐

「网络安全」JAVA代码审计——XXE外部实体注入

一、WEB安全部分想要了解XXE,在那之前需要了解XML的相关基础二、XML基础...

Web前端面试题目及答案汇总(web前端面试题最新)

Web前端面试题目及答案汇总来源:极客头条以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中无法解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,...

什么是脚本文件?与可执行文件有什么不同?

今天的内容是脚本文件和可执行文件是两种不同类型的计算机文件,它们在结构和执行方式上有显著区别。脚本文件:定义与特性...

20个实用Python运维脚本(收藏级)(python 运维工具)

系统环境:支持Linux(Ubuntu/CentOS/Debian)和Windows...

2026年前每个开发者都应该学习的技能

优秀开发者...

Linux 如何每 5、10、15 或 30 分钟运行一次 Cron 作业?

在Linux系统中,Cron是一个强大的工具,用于自动化重复性任务。通过合理配置...

Shell脚本编程进阶实战:从入门到高效自动化

Shell脚本编程进阶实战:从入门到高效自动化一、参数处理进阶:打造专业级CLI工具1.高级参数解析示例...

在Bash中按分隔符拆分字符串的方法

技术背景在Bash脚本编程中,经常会遇到需要按特定分隔符拆分字符串的需求,例如处理CSV文件、解析日志等。掌握字符串拆分的方法对于数据处理和脚本自动化非常重要。...

程序员用5分钟,把一个400多MB的苹果安装包削掉了187MB

丰色发自凹非寺量子位|公众号QbitAI前些日子,一个...

如何在 Windows 上编写批处理脚本

你知道如何使用命令提示符吗?如果这样做,您可以编写一个批处理文件。在最简单的形式中,批处理文件(或批处理脚本)是双击文件时执行的几个命令的列表。批处理文件一直回到DOS,但仍然适用于现代版本的Win...

一文搞懂shell脚本(shell脚本应用实战)

一文搞懂shell脚本1、shell脚本介绍什么是shell脚本...

一文讲清ShellScript脚本编程知识

摘要:本文详尽地讲述了ShellScript的基础内容,还有它在Linux系统里的运用情况,涵盖了它的基本语法、常用的命令以及高级的功能。ShellScript可是一种简单又非常实用的编...

在Bash脚本中获取自身所在目录的方法

技术背景在使用Bash脚本时,有时需要获取脚本自身所在的目录。比如,当脚本作为另一个应用程序的启动器时,需要将工作目录更改为脚本所在的目录,以便对该目录中的文件进行操作。然而,由于脚本的调用方式多样(...

shell中如何确定脚本的位置?这篇文章告诉你

我想从同一个位置读取一些配置文件,如何确定脚本的位置?。这个问题的出现主要是由两个原因引发的:一是您希望将脚本的数据或配置进行外部化,因此需要一种方式来寻找这些外部资源;二是您的脚本需要对某些捆绑资源...

bash shell 语法(bash命令用法)

下面是**Shell(Bash)语法的常用知识点总结**,适合初学者和日常脚本编写参考。内容涵盖变量、判断、循环、函数、重定向、正则、数组等常见用法。---#Shell(Bash)语法速查总结...