当前位置: 首页 > news >正文

Docker容器技术1——docker基本操作

Docker容器技术

在这里插入图片描述
随着云计算和微服务架构的普及,容器技术成为了软件开发、测试和部署过程中的重要组成部分。其中,Docker作为容器技术的代表之一,以其简便易用的特点赢得了广大开发者的青睐。

Docker允许开发者在轻量级、可移植的容器中打包和运行应用程序及其依赖项。Docker 通过容器化提供了一种标准化的方式来构建、部署和运行应用程序,使得应用程序可以在任何地方以一致的方式运行。

什么是Docker?

在这里插入图片描述

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包进一个可移植的容器中,从而可以在任何安装了Docker的Linux或Windows机器上运行。Docker容器就像是一个轻量级的虚拟机,但它并不包含操作系统;相反,它依赖于主机操作系统的内核功能,如命名空间(Namespace)和控制组(Control Group,简称Cgroup),以实现资源隔离和环境的一致性。

或者说,docker是管理容器的引擎,类似VMworkstation,为应用提供打包,部署的平台。

Docker 的核心概念

1. 容器
  • 容器 是一个轻量级、可移植的封装单元,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
  • 容器与宿主机操作系统共享内核,因此容器相比于虚拟机更加轻量级,启动速度快。
2. 镜像
  • 镜像 是容器的只读模板,定义了容器的运行环境。
  • 镜像是通过 Dockerfile 构建的,Dockerfile 是一个文本文件,包含了创建镜像所需的所有指令。
  • Docker Hub 是一个公共的镜像仓库,用户可以从中下载和上传镜像。
3. Dockerfile
  • Dockerfile 是一个文本文件,包含了构建 Docker 镹像所需的一系列指令。
  • 常见的指令包括 FROM(指定基础镜像)、RUN(运行命令)、CMD(默认启动命令)、EXPOSE(暴露端口)等。
4. Docker Compose
  • Docker Compose 是一种工具,用于定义和运行多容器 Docker 应用。
  • 通过一个 YAML 文件来配置应用的服务、网络和卷,简化了多容器应用的部署和管理。

Docker 的优势

1. 轻量级
  • Docker 容器与宿主机共享内核,占用资源少,启动速度快。
2. 一致性
  • 应用程序在不同环境(开发、测试、生产)中运行时保持一致,因为容器环境是完全定义好的。
3. 隔离性
  • 每个容器都有自己独立的文件系统、网络空间等,彼此之间互不干扰,提高了安全性。
4. 可移植性
  • Docker 容器可以在任何安装了 Docker 引擎的系统上运行,包括不同操作系统和硬件平台。
5. 可复用性
  • Docker 镜像可以被多次使用,简化了环境配置过程。
6. 版本控制
  • Docker 镜像支持版本控制,可以方便地回滚到之前的版本。

docker在企业中的应用场景

Docker 的安装

在这里插入图片描述

SaaS-软件即服务
SaaS是软件即服务。英文全称是Software as a Server。

概念:即云端已经将操作系统到运行环境到软件的客户端都已经搭建好了,使用方不需要安装任何环境或软件,只需要访问客户端就能直接使用、

举例:类似于在我的毕业生管理系统上,我先自己利用云端搭建好平台,然后如果有学校想要使用的话直接分配给他们一些账号和密码,他们就可以直接访问我搭建好的系统进行操作了。


PaaS-平台即服务
PaaS是平台即服务,英文全称是Platform as a Server。

概念:利用云端搭建好操作系统或软件层面的如数据库、中间件等供用户使用,使得用户无需关注底层的基础设施和运行环境,只需要利用这些环境运行自己的应用和数据。

举例:就好比学校要使用我的就业管理系统进行管理,但是不想自己搭建机房和环境,所以就直接本地用少量的机器搭建客户端,将数据库、中间件或部分接口放在云端,请求时直接请求云端的接口和数据。


在企业中docker作为业务的最小载体而被广泛应用
通过docker企业可以更高效率的部署应用并且更具节省资源

docker与虚拟化的对比

在这里插入图片描述
如图所示,在虚拟化之中,每个虚拟机都需要一个独立的操作系统,这将会占用巨量的系统资源,并且降低运行密度。操作系统的重启以及部署也需要占用相当的时间。而docker容器在这方面就更具有优势。
在这里插入图片描述

部署docker

容器工作方法

在这里插入图片描述

1. Linux 系统上的安装
  1. 添加 Docker 仓库
]# cd /etc/yum.repos.d
]# vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/dockerce/linux/centos/7/x86_64/stable/
gpgcheck=0
[centos]
name=extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64
gpgcheck=0
  1. 安装 Docker-ce并启动服务
#安装docker
]# yum install -y docker-ce
#编辑docker启动文件,设定其使用iptables的网络设定方式,默认使用nftables
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--iptables=true
]# systemctl enable --now docker
]# docker info
  1. 激活内核网络选项
    在rhel7中,需要配置内核网络
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
]# sysctl --system
]# systemctl restart docker
2. Windows 和 macOS 系统上的安装
  1. 安装 Docker Desktop
    • 访问 Docker 官方网站下载 Docker Desktop:https://www.docker.com/products/docker-desktop
    • 按照安装向导完成安装。

Docker 的基本操作

1. 镜像管理
  1. 搜索镜像

    docker search ubuntu
    

    在这里插入图片描述

    参数
    NAME 镜像名称
    DESCRIPTION 镜像说明
    STARS 点赞数量
    OFFICIAL 是否是官方的

  2. 拉取镜像

    docker pull ubuntu
    

    在这里插入图片描述

  3. 列出本地镜像

    docker images
    

    在这里插入图片描述

  4. 删除镜像

    docker rmi ubuntu
    
  5. 导出镜像

    docker image save nginx:latest -o nginx-latest.tar.gz
    docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz
    
2. 容器管理
  1. 启动容器

    docker run -it ubuntu bash
    

    -d #后台运行
    -i #交互式运行
    -t #打开一个终端
    --name #指定容器名称
    -p #端口映射 -p 80:8080 把容器8080端口映射到本机80端口
    --rm #容器停止自动删除容器
    --network #指定容器使用的网络

  2. 列出正在运行的容器

    docker ps
    docker ps -a
    docker inspect busybox
    

    分别是查看当前容器,查看所有容器,查看目标容器运行的详细信息

    在这里插入图片描述

  3. 停止容器

    docker stop container_id_or_name
    
  4. 删除容器

    docker rm container_id_or_name
    
  5. 重新进入容器

    docker attach centos7
    
  6. 在容器中执行命令

    docker exec -it 【test】 ifconfig
    

    【test】是docker容器的名字

3. 网络管理
  1. 创建自定义网络

    docker network create my_network
    
  2. 连接容器到网络

    docker run -it --name my_container --network my_network ubuntu bash
    
4. 卷管理
  1. 创建卷

    docker volume create my_volume
    
  2. 挂载卷到容器

    docker run -it -v my_volume:/mnt/data ubuntu bash
    

相关文章:

Docker容器技术1——docker基本操作

Docker容器技术 随着云计算和微服务架构的普及,容器技术成为了软件开发、测试和部署过程中的重要组成部分。其中,Docker作为容器技术的代表之一,以其简便易用的特点赢得了广大开发者的青睐。 Docker允许开发者在轻量级、可移植的容器中打包和…...

ElasticSearch介绍+使用

ElasticSearch 1.背景 ElasticSearch的最明显的优势在于其分布式特性,能够扩展到上百台服务器,极大地提高了服务器的容错率。在大数据时代背景下,ElasticSearch与传统的数据库相比较,能够应对大规模的并发搜索请求,同…...

Redis——常用数据类型List

目录 List列表常用命令lpushlpushxrpushrpushlrangelpoprpoplindexlinsertllenlremltrim key start stoplset 阻塞版本命令blpopbrpop list的编码方式list的应用 List列表 Redis中的list相当于数组,或者 顺序表,一些常用的操作可以通过下面这张图来理解…...

前端基础知识+算法(一)

文章目录 算法二分查找条件注意方式基本原理左闭右闭正向写法 左闭右开正向写法 前端基础知识定时器及清除盒子垂直水平居中的方式垂直水平1.flex布局2.grid布局3.定位对于块级元素 解决高度塌陷的方式1.给父元素一个固定的高度2.给父元素添加属性 overflow: hidden;3.在子元素…...

photozoom classic 9解锁码2024年最新25位解锁码

photozoom classic 9 破解版顾及比恐龙还要稀有,我曾经和你一样一直再找,找了好几个月,也没有找到真的破解版,下载很多次, 都是病毒插件之类的 我昨天下了几次,没有一个不附带插件病毒木马的.......&#x…...

Oracle发邮件功能:设置的步骤与注意事项?

Oracle发邮件配置教程?如何实现Oracle发邮件功能? Oracle数据库作为企业级应用的核心,提供了内置的发邮件功能,使得数据库管理员和开发人员能够通过数据库直接发送邮件。AokSend将详细介绍如何设置Oracle发邮件功能。 Oracle发邮…...

优化理论及应用精解【9】

文章目录 二次型函数二次型函数详细解释一、定义二、性质三、应用四、示例五、图表辅助说明(由于文本限制,无法直接提供图表) “西尔维斯特准则”一、定义二、来源三、应用场景 参考文献 二次型函数 二次型函数详细解释 一、定义 二次型函…...

nginx实现https安全访问的详细配置过程

文章目录 前言什么是 HTTP?什么是 HTTPS?HTTP 和 HTTPS 的区别为什么 HTTPS 被称为安全的?配置过程配置自签名证书 前言 首先我们来简单了解一下什么是http和https以及他们的区别所在. 什么是 HTTP? HTTP,全称为“超…...

1. TypeScript基本语法

TypeScript 学习总结 TypeScript 是一种 JavaScript 的超集,增加了静态类型检查和编译时错误检测,从而提高了代码的可维护性和可靠性。以下是 TypeScript 的基础知识总结,包括语法、运算符、数据类型、变量声明和作用域。 ## 基本语法TypeS…...

C# UDP与TCP点发【速发速断】模式

1、UDP 客户端 //由于收发都在本机,所以只用一个IP地址 IPAddress addr IPAddress.Parse("127.0.0.1"); var ptLocal new IPEndPoint(addr,9001);//本机节点,用于发送var ptDst new IPEndPoint(addr,9002);//目标节点…...

pikachu下

CSRF(跨站请求伪造) CSRF(get) url变成了这样了,我们就可以新开个页面直接拿url去修改密码 http://pikachu-master/vul/csrf/csrfget/csrf_get_login.php?username1&password2&submitLogin CSRF(post) 这里只是请求的方式不同,…...

Go语言开发im-websocket服务和vue3+ts开发类似微信pc即时通讯

前言 IM即时通讯聊天, 为软件开发者打造,不依赖第三方sdk,完全用Go语言开发即时通讯服务,支持H5、Electron、Wails 、Uniapp和各种小程序的IM即时通讯, 快速实现私聊、群聊、在线客服!让你快速搭建一个微信聊天系统,打…...

Redis如何实现分布式锁

目录 获取锁: 释放锁: Lua脚本: Redisson 分布式锁是,满足分布式系统或集群模式下多进程可见并且互斥的锁,因为我们熟知的java中的锁只是在单体架构下单个jvm中才会生效,如果部署了多个jvm则会导致新的…...

面向对象程序设计之继承(C++)

1.继承的定义 1.1继承的概念 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类。继承 呈现了⾯向…...

IAPP发布《2024年人工智能治理实践报告》

文章目录 前言一、黑箱问题►透明度、可理解性与可解释性二、法律和政策中的注意事项►欧盟的《通用数据保护条例》►欧盟的AI法案►NIST的AI风险管理框架►美国的第14110号行政命令►《生成式人工智能服务管理暂行办法》►新加坡的AI验证三、实施人工智能治理►模型卡与系统卡…...

了解MySQL 高可用架构:主从备份

为了防止数据库的突然挂机,我们需要对数据库进行高可用架构。主从备份是常见的场景,通常情况下都是“一主一从/(多从)”。正常情况下,都是主机进行工作,从机进行备份主机数据,如果主机某天突然意外宕机,从机…...

[OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码

文章目录 前言1.像素重映射理论基础2.代码实现(1) remap()细节(2)水平翻转(2)垂直翻转(3)旋转 180 度(4)径向扭曲 3.完整代码 前言 像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,cv::remap() 函数就是用于实现这…...

Oreace每日运维操作

一.Oreace每日运维操作 目录 一.Oreace每日运维操作 1.1、确认所有的INSTANCE状态正常 1.2、检查文件系统的使用(剩余空间) 1.3 lwh暗码,,、检查日志文件和trace文件记录 1.4 lwh、检查数据库当日备份…...

【XR】AR HUD

1. AR HUD(head up display)原理 目标: 产业链上的各大Tier1及PGU企业都在积极开发这一技术,许多厂家已推出LCOS样机,比如说水晶光电、华阳集团、瀚思通、疆程已在北京车展或去年的上海车展上展出了LCOS方案的AR-HUD样…...

C/C++内存管理——内存泄漏/内存碎片

一、什么是内存泄漏 内存泄漏指的是在程序运行过程中,已经分配给程序使用的内存没有得到及时和正确的释放,导致这部分内存无法被程序再次使用或者被操作系统回收。内存泄漏通常发生在动态分配的内存上,如果这部分内存没有被正确释放,随着时间的推移,越来越多的内存将被占…...

蓝桥杯国赛训练 day1 Java大学B组

目录 k倍区间 舞狮 交换瓶子 k倍区间 取模后算组合数就行 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {solve();}public static vo…...

找到每一个单词+模拟的思路和算法

如大家所知,我们可以对给定的字符串 sentence 进行一次遍历,找出其中的每一个单词,并根据题目的要求进行操作。 在寻找单词时,我们可以使用语言自带的 split() 函数,将空格作为分割字符,得到所有的单词。为…...

Java-39 深入浅出 Spring - AOP切面增强 核心概念 通知类型 XML+注解方式 附代码

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

使用BERT/BiLSTM + CRF 模型进行NER进展记录~

使用代码处理数据集,发现了一些问题,以及解决办法~ 下载了一组数据集,数据存放在CSV中,GBK格式。如下: 首先对每一列直接进行NER抽取,结果非常不好: 几乎是乱抽取的,解决办法是自己创…...

理解继承与组合的本质:Qt 项目中的设计选择指南

文章目录 理解继承与组合的本质:Qt 项目中的设计选择指南一、继承与组合的本质区别1. 继承(Inheritance)2. 组合(Composition) 二、继承的适用场景三、组合的适用场景四、错误使用继承的后果五、判断继承或组合的三问法…...

webshell管理工具、C2远控服务器流量分析

文章目录 一、Webshell管理工具流量分析1. 蚁剑(AntSword)2. 冰蝎(Behinder)3. 哥斯拉(Godzilla)二、常见C2远控服务器流量分析1. Metasploit2. CobaltStrike 三、防御对抗策略总结 一、Webshell管理工具流…...

unix/linux,sudo,一个强大且灵活的工具,允许一个被授权的用户以另一个用户(通常是root,即超级用户)的身份来执行命令

sudo:不仅仅是“用管理员权限运行” sudo 这个词,来源于 SuperUser DO (或者 Substitute User DO,后者的含义更为广阔和准确)。它是一个强大且灵活的工具,允许一个被授权的用户以另一个用户(通常是root,即超级用户)的身份来执行命令。 1. Unix/Linux 的权限哲学:最小…...

数据库系统概论(十三)详细讲解SQL中数据更新(插入,修改与更新)

数据库系统概论(十三)详细讲解SQL中数据更新 前言一、数据插入1. 插入数据是什么?2.插入单条数据(插入元组)场景 1:指定部分列插入场景 2:不指定列名(插入所有列)场景 3&…...

macos常见且应该避免被覆盖的系统环境变量(避免用 USERNAME 作为你的自定义变量名)

文章目录 macos避免用 USERNAME 作为你的自定义变量名macos常见且应该避免被覆盖的系统环境变量 macos避免用 USERNAME 作为你的自定义变量名 问题: 你执行了:export USERNAME“admin” 然后执行:echo ${USERNAME} 输出却是:xxx …...

2024年数维杯国际大学生数学建模挑战赛D题城市弹性与可持续发展能力评价解题全过程论文及程序

2024年数维杯国际大学生数学建模挑战赛 D题 城市弹性与可持续发展能力评价 原题再现: 中国人口老龄化趋势的加剧和2022年首次出现人口负增长,表明未来一段较长时期内我国人口将呈现下降趋势。这一趋势必将影响许多城市的高质量和可持续发展&#xff0c…...