探索 Docker:容器化技术的未来

news2025/1/6 20:26:46

1. 引言

        在传统的软件开发和部署过程中,经常会遇到诸如“开发环境和生产环境不一致”、“依赖环境冲突”、“部署困难”等问题。为了解决这些问题,容器化技术应运而生。Docker 作为最受欢迎的容器平台之一,已经在业界得到广泛应用。它不仅简化了软件的开发、交付和运维流程,还提高了系统的可移植性、可扩展性和安全性。


2. 什么是 Docker?

        Docker 是一个开源的容器平台,旨在帮助开发人员轻松地打包、交付和运行应用程序。通过 Docker,开发人员可以将应用程序及其所有依赖项(如代码、运行时环境、库、配置文件等)打包到一个称为 Docker 镜像的独立可执行软件包中。这些 Docker 镜像可以在任何装有 Docker 引擎的环境中运行,无需进行额外的配置。

  1. 镜像(Image):容器的基础,是一个只读模板,包含了运行容器所需的所有文件和配置信息。可以将镜像看作是容器的源代码,通过它可以创建多个容器实例。

  2. 容器(Container):从镜像创建的可运行实例。每个容器都是相互隔离的、独立运行的环境,包含了应用程序及其运行时环境。

  3. 仓库(Repository):用于存储和组织镜像的集合。可以将镜像推送到仓库中,也可以从仓库中拉取镜像到本地。


3. Docker 的优势

  1. 环境一致性:Docker 可以确保在不同的环境中运行相同的应用程序,消除了“开发环境和生产环境不一致”的问题。

  2. 快速部署:Docker 镜像可以快速部署,无需进行复杂的配置和安装过程,大大提高了应用程序的交付速度。

  3. 资源隔离:每个 Docker 容器都运行在独立的环境中,相互之间互不干扰,有效地实现了资源隔离和应用程序间的解耦。

  4. 可扩展性:Docker 容器可以根据需要进行水平或垂直扩展,轻松应对不同规模和负载的需求。

  5. 持续集成和持续交付(CI/CD):Docker 与 CI/CD 流程无缝集成,使得自动化部署和交付成为可能,加快了软件开发周期。

                                                                                                                                                        

4. Docker的安装 

        1.卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

        2.配置Docker的yum库

首先要安装一个yum工具:

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

        3.安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

        4. 启动与校验 

# 启动Docker

systemctl start docker

# 停止Docker

systemctl stop docker

# 重启

systemctl restart docker

# 设置开机自启

systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功

docker ps

        5.配置镜像加速

这里以阿里云镜像加速为例。

        5.1.注册阿里云账号

首先访问阿里云网站:

阿里云-计算,为了无法计算的价值

注册一个账号。

        5.2.开通镜像服务

在首页的产品中,找到阿里云的容器镜像服务

 

首次可能需要选择立刻开通,然后进入控制台。

        5.3.配置镜像加速

找到镜像工具下的镜像加速器

页面向下滚动,即可找到配置的文档说明:

# 创建目录

mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的

tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF

# 重新加载配置

systemctl daemon-reload

# 重启Docker

systemctl restart docker

6. Docker容器和镜像的概念介绍

        6.1 Docker为什么下载就可以使用?不想要配置环境等吗?

        Docker会下载(拉取)运行应用程序所需的一切:代码、运行时环境、系统工具、库 等,镜像是一个可移植的软件打包方式,使应用程序可以在任何装有 Docker 引擎的环境中运行,而不需要额外的配置。比如配置文件什么都有。

        6.2 docker的工作原理?

        守护进程主要作用是在系统中提供某种服务或功能,并在系统启动时自动启动,持续运行以处理特定的任务或事件。Docker底层就有这样的机制,存在这一个守护线程,持续监视着服务的变化。当进行了Docker run命令,守护线程就会查看本地仓库是否含有这个镜像,没有就会到镜像仓库去下载。

        6.3 docker的基础代码解读

       -p 宿主机端口:容器端口

        为什么要进行端口映射:容器是对外隔离的,对内开放,所以需要宿主机和容器的端口进行映射,这样就可以通过使用宿主机当中介进行访问了。

        镜像名称规范: 例如上述:mysql

  • 镜像名称一般分两部分组成:[repository]:[tag]
    • repository就是镜像名
    • tag是镜像的版本
  • 在没有指定tag时,默认是latest,代表最新版本的镜像

  7. Docker 常见的命令      

  1. docker run:创建并启动一个容器。

  2. docker stop:停止一个正在运行的容器。

  3. docker start:启动一个已经停止的容器。

  4. docker restart:重启一个正在运行的容器。

  5. docker rm:删除一个已经停止的容器。

  6. docker ps:列出当前正在运行的容器。

  7. docker images:列出本地所有的镜像。

  8. docker pull:从 Docker 镜像仓库中拉取一个镜像。

  9. docker push:将一个镜像推送到 Docker 镜像仓库。

  10. docker exec:在一个正在运行的容器中执行命令。

  11. docker logs:查看容器的日志输出。

  12. docker build:根据 Dockerfile 构建一个自定义镜像。

8.  什么是数据卷?

        数据卷是 Docker 中用于持久化存储数据的机制,它可以将宿主机文件系统中的目录或文件映射到容器内部。这样,容器可以通过数据卷访问宿主机上的文件,也可以与其他容器共享数据。

Docker 数据卷是 Docker 容器中的一种持久化数据存储方式,允许容器与宿主机或其他容器之间共享和持久化数据。数据卷可以在容器之间共享数据,同时还可以保留容器中的数据,即使容器被删除或重新创建,数据仍然会保留。

容器内的文件通过数据卷宿主机的文件进行间接的映射。

        8.1 数据卷的创建

使用 -v 参数:在运行容器时,可以使用 -v 参数来创建一个数据卷。

例如:docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

其中 html 为数据卷的名称,/usr/share/nginx/html  容器内数据卷的目录。

也可以挂载到指定本地目录。

当创建容器时,如果挂载了数据卷且数据卷不存在,会动创建数据卷。

挂载后就会进行双向绑定,然后宿主机会有各种高级操作的命令,就可以对文件内容进行修改。

        8.2 数据卷常用的命令

          8.3 为什么要使用数据卷呢?

        虽然docker中,每个容器都有独立的运行环境,但是docker只有系统运行所必须的依赖环境,目的是为了容器的轻量级,所以不会含有vi命令编辑文件,但我们又想编辑容器中的配置文件,或者运行文件,这时候就需要使用数据卷,来将docker容器中的文件与宿主机的文件进行双向绑定,但宿主机的文件进行修改,docker容器中的文件也会进行自动修改。

9. 总结

  1. 引言中介绍了传统软件开发和部署中的常见问题,并介绍了容器化技术的出现以及 Docker 作为一个受欢迎的容器平台。
  2. Docker 的优势部分可以进一步展开,如提高开发效率、实现环境一致性、简化部署流程、提升系统可移植性和安全性等。
  3. Docker 的安装过程需要卸载旧版本、配置 yum 库、安装 Docker、启动和验证,并介绍了如何配置镜像加速以提高镜像下载速度。
  4. Docker 容器和镜像的概念介绍了容器为什么可以直接下载使用、Docker 的工作原理以及基础代码解读等内容。
  5. Docker 常见的命令部分可以列举一些常用的命令和其作用,如 docker rundocker psdocker stop 等。
  6. 数据卷的概念介绍了数据卷的作用、创建方法、常用命令以及为什么要使用数据卷等。

       

        

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot整合钉钉实现消息推送

前言 钉钉作为一款企业级通讯工具&#xff0c;具有广泛的应用场景&#xff0c;包括但不限于团队协作、任务提醒、工作汇报等。 通过Spring Boot应用程序整合钉钉实现消息推送&#xff0c;我们可以实现以下功能&#xff1a; 实时向指定用户或群组发送消息通知。自定义消息内容…

数据库管理-第199期 近期获得的国产数据库荣誉(20240609)

数据库管理199期 2024-06-09 数据库管理-第199期 近期获得的国产数据库荣誉&#xff08;20240609&#xff09;1 HaloDB2 PolarDB3 TiDB4 青学会总结 数据库管理-第199期 近期获得的国产数据库荣誉&#xff08;20240609&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹…

eNSP学习——RIP故障处理

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、导入设备预配置 2、排除R1与R2间的故障 3、排除R1与R3间的故障 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PDF版_ensp配置命令大全资源-CSDN文库 主要命令 //检查…

CPP初阶:CPP的内存管理模式

目录 一.new和delete操作自定义类型 1.1C语言的内存管理 1.2CPP的内存管理方式 1.3C与CPP内存管理的差异 二.operator new和operator delete函数 三.CPP空间操作符使用深化 3.1 连续内存开辟与释放 3.2 非连续内存开辟与释放 四.new和delete的实现原理 4.1内置类型 4.2…

EarMaster Pro软件下载附加详细安装教程

简介 来自丹麦皇家音乐学院的多媒体音乐教育软件 EarMaster Pro以问答的交互形式&#xff0c;寓教于乐的视听方法&#xff0c;给专业和非专业音乐人士以极大的音乐学习帮助。 无论你是刚学音乐的儿童&#xff0c;还是一个音乐高手&#xff0c;都可以使用这个软件来增强你的听音…

工程师 - VMware workstation pro个人版现已免费

May 13, 2024 VMware 桌面虚拟机管理程序(VMware Desktop Hypervisors) 使用行业标准桌面管理程序 VMware Workstation Pro for Windows 和 Linux 或 VMware Fusion for Mac 运行 Windows、Linux 和其他虚拟机。 Run Windows, Linux and other virtual machines with VMware Wo…

手把手带你做一个自己的网络调试助手(2) - TCP服务器完善

服务器指定客户端发送 自定义控件comboBox - 刷新客户端列表 目的&#xff1a; 自定义控件&#xff0c;当鼠标点击这个comboBox控件的时候去刷新客户端列表 mycombobox.h #ifndef MYCOMBOBOX_H #define MYCOMBOBOX_H#include <QComboBox> #include <QWidget>cl…

Echarts 可视化图库案例(Make A Pie)

1、Made A Pie Made A Pie 2、可视化社区 &#xff08;Made A Pie 替代&#xff09; 可视化社区

MATLAB算法实战应用案例精讲-【数模应用】因子分析(附MATLAB和python代码实现)

目录 前言 算法原理 SPSS因子分析 操作步骤 结果分析 SPSSAU 因子分析案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 同源方差或共同方法变异偏差,Harman单因子检验? 提示出现奇异矩阵? 因子得分和综合得分? 因子分析计…

(南京观海微电子)——温度对TFT影响及改善方式

温度如何损坏 LCD&#xff1f; 这个工作温度范围会影响设备内的电子部分&#xff0c;超出范围会导致 LCD 技术在高温下过热或在寒冷时变慢。 至于液晶层&#xff0c;如果放在高温下&#xff0c;它会变质&#xff0c;导致它和显示器本身出现缺陷。 LCD 温度限制&#xff1a; 什…

国内docker镜像站全军覆没 如何自己部署一个Docker镜像加速服务器?

近日&#xff0c;在使用SJTUG提供的镜像加速拉取镜像的时候死活拉不下来&#xff0c;不管是 docker hub 还是国内的某些镜像站&#xff0c;同样都无法使用&#xff0c;虽然现在还有部分可用的镜像站&#xff0c;但也说不准某一天因为某些原因同样停止提供了&#xff0c;这时候就…

用爬虫实现---模拟填志愿

先来说实现逻辑&#xff0c;首先我要获取到这个网站上所有的信息&#xff0c;那么我们就可以开始对元素进行检查 我们发现他的每一个学校信息都有一个对应的属性&#xff0c;并且是相同的&#xff0c;那么我们就可以遍历这个网页中的所有属性一样的开始爬取 在来分析&#xff0…

图解人工智能的数学基础(线性代数)

&#x1f31e;欢迎来到人工智能的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年6月9日&a…

使用 Scapy 库编写 TCP RST 攻击脚本

一、介绍 TCP RST攻击是一种拒绝服务攻击&#xff08;Denial-of-Service, DoS&#xff09;类型&#xff0c;攻击者通过伪造TCP重置&#xff08;RST&#xff09;包&#xff0c;中断目标主机与其他主机之间的TCP连接。该攻击利用了TCP协议中的重置机制&#xff0c;强制关闭合法的…

思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹

你们谁写代码会用流程图来做计划&#xff0c;或者写项目总结报告&#xff1f; .net带进度条复制文件夹 方案 列出所有子文件夹&#xff0c;再创建&#xff0c;复制文件 大文件可以单独做进度条 缺点&#xff1a;设计会更复杂 直接…

【人工智能】第七部分:ChatGPT的未来展望

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

[HNCTF 2022 WEEK4]flower plus

第一种花指令 第二种花指令 根据两种花指令特征&#xff0c;写出去花指令脚本 saddr0x401000 eaddr0x435000 for i in range(saddr,eaddr):if get_wide_dword(i)0x01740275:print(hex(i),hex(get_wide_dword(i)))patch_byte(i-5,0x90)patch_dword(i-4,0x90909090)patch_dw…

手机和模拟器的 Frida 环境配置

目录 一、配置 JDK 和 android 环境 二、连接设备和查看权限 1、连接设备 2、查看手机权限 三、手机配置 Frida 1、frida-server下载 2、验证 四、模拟器配置 Frida 1、下载模拟器并调节成手机版&#xff1a; 2、连接并查看架构 3、配置并开启 x86 的 frida-serve…

github无法打开 太慢了怎么办

github无法打开 解决方法 找到 C:\Windows\System32\drivers\etc 双击用记事本打开 末尾加上 #github 140.82.112.4 github.com 199.232.69.194 github.global.ssl.fastly.netwinR 输入cmd 刷新dns即可 ipconfig /flushdns 2024/6/9日测试有效

详解 Flink 的状态管理

一、Flink 状态介绍 1. 流处理的无状态和有状态 无状态的流处理&#xff1a;根据每一次当前输入的数据直接转换输出结果的过程&#xff0c;在处理中只需要观察每个输入的独立事件。例如&#xff0c; 将一个字符串类型的数据拆分开作为元组输出或将每个输入的数值加 1 后输出。…