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 系统上的安装
- 添加 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
- 安装 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
- 激活内核网络选项:
在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 系统上的安装
- 安装 Docker Desktop:
- 访问 Docker 官方网站下载 Docker Desktop:https://www.docker.com/products/docker-desktop
- 按照安装向导完成安装。
Docker 的基本操作
1. 镜像管理
-
搜索镜像:
docker search ubuntu
参数
NAME 镜像名称
DESCRIPTION 镜像说明
STARS 点赞数量
OFFICIAL 是否是官方的 -
拉取镜像:
docker pull ubuntu
-
列出本地镜像:
docker images
-
删除镜像:
docker rmi ubuntu
-
导出镜像
docker image save nginx:latest -o nginx-latest.tar.gz docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz
2. 容器管理
-
启动容器:
docker run -it ubuntu bash
-d
#后台运行
-i
#交互式运行
-t
#打开一个终端
--name
#指定容器名称
-p
#端口映射 -p 80:8080 把容器8080端口映射到本机80端口
--rm
#容器停止自动删除容器
--network
#指定容器使用的网络 -
列出正在运行的容器:
docker ps docker ps -a docker inspect busybox
分别是查看当前容器,查看所有容器,查看目标容器运行的详细信息
-
停止容器:
docker stop container_id_or_name
-
删除容器:
docker rm container_id_or_name
-
重新进入容器
docker attach centos7
-
在容器中执行命令
docker exec -it 【test】 ifconfig
【test】是docker容器的名字
3. 网络管理
-
创建自定义网络:
docker network create my_network
-
连接容器到网络:
docker run -it --name my_container --network my_network ubuntu bash
4. 卷管理
-
创建卷:
docker volume create my_volume
-
挂载卷到容器:
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年首次出现人口负增长,表明未来一段较长时期内我国人口将呈现下降趋势。这一趋势必将影响许多城市的高质量和可持续发展,…...