Docker基础知识详解
✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。
🍎个人主页:Hhzzy99
🍊个人信条:坚持就是胜利!
💞当前专栏:文章
🥭本文内容:Docker基础知识的讲解。
文章目录
- Docker基础知识详解
- 引言
- Docker的基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
- Docker的工作原理
- Docker的基本操作
- 安装Docker
- 创建和运行容器
- 构建和推送镜像
- 结语
Docker基础知识详解
引言
Docker 是一个开放源代码的应用程序容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用和依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上,实现了软件应用的快速部署、测试及分发。这篇文章将详细介绍Docker的基础知识,包括基本概念、工作原理及基本操作。
Docker的基本概念
在开始使用Docker之前,我们首先需要理解一些关于Docker的基本概念,包括镜像(Image)、容器(Container)以及仓库(Repository)。
镜像(Image)
在Docker的世界中,镜像可以看做是只读的模板。例如,一个镜像可以包含一个完整的Ubuntu操作系统环境,其中包含了用户需要的软件,如Apache、应用程序以及应用程序的运行环境。用户可以根据需要构建或者下载已经制作好的镜像来创建Docker容器。
容器(Container)
容器是镜像的一个运行实例。与直接在宿主机操作系统上运行应用程序相比,容器的优势在于它是在相对隔离的环境中运行,具有良好的安全性。每个容器之间互不干扰,它们有各自的文件系统,各自的网络配置,各自的进程空间,就像是一个微型的独立操作系统。
仓库(Repository)
仓库是集中存放镜像文件的场所。仓库分为公开仓库和私有仓库。其中,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的阿里云等也提供了Docker镜像仓库。
Docker的工作原理
理解了Docker的基本概念之后,我们再来看一下Docker的工作原理。Docker利用容器来运行和隔离应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证了安全的机制。
当你运行一个容器时,Docker会在镜像和文件系统之间添加一个可写层,然后启动容器。这个可写层与镜像层的分离,意味着你可以随意修改容器中的文件和数据,而不会影响到底层的镜像。这就是为什么同一个镜像可以用来启动数百
个容器,而且每个容器都可以有自己的数据和状态。
Docker使用客户端-服务器的模式。Docker客户端会和Docker守护进程进行通信。Docker守护进程负责构建、运行和管理Docker容器。Docker客户端和守护进程可以运行在同一个系统上,也可以通过socket或RESTful API来连接远程的Docker守护进程。
Docker的基本操作
在了解了Docker的基本概念和工作原理后,让我们来看一下如何在实践中使用Docker。这部分将包括Docker的安装、如何创建和运行容器、以及如何构建和推送镜像等内容。
安装Docker
以Ubuntu系统为例,我们可以使用以下命令来安装Docker:
sudo apt-get update
sudo apt-get install docker-ce
创建和运行容器
创建和运行容器是Docker最基本的操作之一。我们可以使用docker run命令来创建并运行一个容器。例如,我们可以使用下面的命令来运行一个ubuntu容器,并执行/bin/bash命令:
docker run -it ubuntu /bin/bash
在这个命令中,-it选项让容器的Shell绑定到我们当前的Shell,这样我们就可以直接在终端中输入命令来控制容器。ubuntu是我们要运行的镜像的名字,/bin/bash是在容器中要执行的命令。
我们也可以在后台运行容器,只需要将-it选项改为-d即可:
docker run -d ubuntu /bin/bash
构建和推送镜像
在实际开发中,我们通常需要根据自己的需求来构建镜像。这个过程可以通过编写Dockerfile来实现。Dockerfile是一个文本文件,其中包含了一系列的命令,Docker可以根据这些命令来自动构建镜像。
以下是一个简单的Dockerfile例子:
# 使用官方的Python运行时作为父镜像
FROM python:3.7-slim# 设置工作目录
WORKDIR /app# 将当前目录的内容复制到容器的/app目录中
ADD . /app# 安装所需的包
RUN pip install --no-cache-dir -r requirements.txt# 启动应用
CMD ["python", "app.py"]
在Dockerfile所在的目录下,我们可以使用下面的命令来构建镜像:
docker build -t my-app:1.0 .
在这个命令中,-t选项用来给镜像命名,.表示Dockerfile所在的路径。
构建完镜像后,我们可以将镜像推送到仓库中,以
便其他人使用。我们可以使用docker push命令来推送镜像:
docker push my-app:1.0
在执行这个命令前,需要先使用docker login命令登录到Docker Hub。
结语
本文详细介绍了Docker的基础知识,包括Docker的基本概念、工作原理以及如何使用Docker来创建和运行容器,构建和推送镜像。Docker是一个非常强大的工具,通过它,我们可以更轻松地进行软件开发、测试和部署,提高我们的工作效率。希望本文能帮助你对Docker有一个更深入的了解,更好地使用Docker来优化你的工作流程。
相关文章:
Docker基础知识详解
✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:文章 🥭本文内容&am…...
腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?
6月5日,香港交易所发布公告,将于6月19日在香港证券市场推出“港币-人民币双柜台模式”,当日确定有21只证券指定为双柜台证券。同时,港交所还表示,在双柜台模式推出前,更多证券或会被接纳并加入双…...
CentOS7 使用Docker 安装MySQL
CentOS7 使用Docker 安装MySQL Docker的相关知识本篇不会再概述,有疑惑的同学请自行查找相关知识。本篇只是介绍如何在CentOS7下使用Docker安装相应的镜像。 可登陆Docker官网 https://docs.docker.com 之后可以跟着官方的步骤进行安装。 clipboard.png 具体安装过…...
注解和反射复习
注解 注解:给程序和人看的,被程序读取,jdk5.0引用 内置注解 override:修饰方法,方法声明和重写父类方法, Deprecated:修饰,不推荐使用 suppressWarnings用来抑制编译时的警告,必须添加一个或多个参数s…...
RocketMQ的demo代码
下面是一个使用Java实现的RocketMQ示例代码,用于发送和消费消息: 首先,您需要下载并安装RocketMQ,并启动NameServer和Broker。 接下来,您可以使用以下示例代码来发送和消费消息: Producer.java文件&…...
C++ 连接、操作postgreSQL(基于libpq库)
C++ 连接postgreSQL(基于libpq库) 1.环境2.数据库操作2.1. c++ 连接数据库2.2. c++ 删除数据库属性表内容2.3. c++ 插入数据库属性表内容2.4 c++ 关闭数据库1.环境 使用libpq库来链接postgresql数据库,主要用到的头文件是这个: #include "libpq-fe.h"2.数据库操…...
Node.js技术简介及其在Web开发中的应用
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使得JavaScript能够在服务器端运行。Node.js采用事件驱动、非阻塞I/O模型,能够处理大量并发请求,非常适合处理I/O密集型的应用程序。本文将介绍Node.js的特点、优势以及在Web开发中的应…...
时间序列分析:原理与MATLAB实现
2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 1. 时间序列分析简介 2. 自回归模型(AR) 2.1. 参数估计 2.2. MATLAB实现...
mysql排序之if(isnull(字段名),0,1),字段名 或者 if(isnull(字段名),1,0),字段名
mysql排序之if(isnull(字段名),0,1),字段名 或者 if(isnull(字段名),1,0),字段名 默认情况下,MySQL将null算作最小值。如果想要手动指定null的顺序,可以这样处理: 将null强制放在最前 //null, null, 1,2,3,4(默认就是这样&#…...
华为OD机试真题 Java 实现【递增字符串】【2023Q1 200分】,附详细解题思路
一、题目描述 定义字符串完全由“A’和B"组成,当然也可以全是"A"或全是"B。如果字符串从前往后都是以字典序排列的,那么我们称之为严格递增字符串。 给出一个字符串5,允许修改字符串中的任意字符,即可以将任何的"A"修改成"B,也可以将…...
合并文件解决HiveServer2内存溢出方案
一、文件过多导致HiveServer2内存溢出 1.1查看表文件个数 desc formatted yanyu.tmp• 表文件数量为6522102 1.2查看表文件信息 hadoop fs -ls warehouse/yanyu.db/tmp• 分区为string 类型的time字段,分了2001个区。 1.3.查看某个分区下的文件个数为10000个 …...
韧性数据安全体系缘起与三个目标 |CEO专栏
今年4月,美创科技在数据安全领域的新探索——“韧性”数据安全防护体系框架正式发布亮相。 为帮您更深入了解“韧性数据安全”,我们特别推出专栏“构建适应性进化的韧性数据安全体系”,CEO柳遵梁亲自执笔,进行系列解读分享。 首期…...
华为OD机试真题 Java 实现【火车进站】【牛客练习题】
一、题目描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。 要求输出所有火车出站的方案,以字典序排序输出。 …...
c#快速入门(下)
欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析2 目录 👉🏻Inline和lambda委托和lambda 👉…...
基于深度学习的目标姿态检测方法_kaic
目录 摘要 第1章 引言 1.1 研究背景和意义 1.2 国内外研究现状 1.3 主要内容 第2章 单目相机的目标姿态检测技术 2.1单目相机的工作原理 2.2目标姿态检测 2.3已有的目标姿态检测方法及其局限性 2.4本章总结 第3章 构建数据集 3.1 数据集来源 3.2数据集标注 3.3数据集分析 3.4本…...
Pycharm设置Python每个文件开头自定义模板(带上声明字符编码、作者名、时间等)
Pycharm设置地址: 在File---settings---Editor---File and Code Templates---Python script 脚本里添加: 模板声明设置参考: # ---encoding:utf-8--- # Time : ${DATE} ${HOUR}:${MINUTE} # Author : 作者名 # Email :你的邮箱 # Sit…...
Gem相关操作命令
Gem相关操作命令 gem -v # 查看 gem 版本gem source # 查看 gem 配置源 gem source -l # 查看 gem 配置源目录 gem sources -a url # 添加 gem 配置源(url 需换成网址) gem sources --add url # 添加 gem 配置源(url 需换成网址)…...
软件测试2023年行情怎么样?仔细讲解!
目录 前言: 普通功能测试人员不建议跳槽 还有一个要求就是要对业务的极致理解 那么产业互联网趋势会导致什么呢? 现在跳槽涨薪需要掌握到什么样的技术呢? 给大家一些跳槽建议 前言: 软件测试是为了发现程序中的错误而执行程序的…...
【1130. 叶值的最小代价生成树】
来源:力扣(LeetCode) 描述: 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个子节点。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。每个非叶节点的值等于…...
Linux各个目录的全称及含义
/ 根目录,包含整个文件系统的根节点。 /bin : Binary Directory 二进制文件目录,包含一些基本的可执行程序。 /boot : Boot Directory 包含启动系统所需的文件,如内核和引导程序。 /dev : Device Directory 设备文件目录,…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
