Linux安装最新版Docker完整教程
参考官网地址:Install Docker Engine on CentOS | Docker Docs
一、安装前准备工作
1.1 查看服务器系统版本以及内核版本
cat /etc/redhat-release
1.2 查看服务器内核版本
uname -r

这里我们使用的是CentOS 7.6 系统,内核版本为3.10
1.3 安装依赖包
yum install -y yum-utils


1.4 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

二、安装Docker
2.1 Docker版本说明
Docker从17.03版本之后分为两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。
企业版包含了一些收费服务,个人开发者一般用不到,所以我们只需要安装社区版docker-ce版本即可。
2.2 docker-ce安装
yum install -y docker-ce

2.3 启动 Docker。
$ sudo systemctl start docker
2.4通过运行映像来验证 Docker 引擎安装是否成功。hello-world
sudo docker run hello-world 此命令下载测试映像并在容器中运行它。当 容器运行,它打印确认消息并退出。
2.5 启动docker并设置开机自启
#启动docker命令
systemctl start docker
#设置开机自启命令
systemctl enable docker
#查看docker版本命令
docker version
三、Docker基本概念介绍
3.1 仓库 (repository)
docker仓库是用来保存镜像的地方。镜像构建完成后,可以直接在当前宿主机上运行,但是如果需要在其它服务器上使用这个镜像,
就需要一个集中存储、分发镜像的服务,docker仓库就是这样的一个服务。
3.2 镜像(Image)
这里面保存了应用和需要的依赖环境,比如运行的runtime和webapp等。
为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们通常会有不同优先级。通过为这些独立的任务提供不同镜像
3.3 容器(Container)
镜像的实例。一个容器代表一个正在运行的应用程序、进程或服务。它由 Docker 镜像、执行环境和标准指令集组成。需要扩展服务时,才
真正将镜像跑起来的东西,镜像在容器里面。可以看作是一个完全隔离的盒子。一个容器镜像实例代表一个独立的进程。
四、使用Dockerfile构建镜像


这一部分可搜索“使用Dockerfile构建镜像”相关文章,这里我就随便粘贴一篇使用Dockerfile构建镜像及构建流程、操作指令详解_dockerfile构建镜像后里面的数据库变量还有用?-CSDN博客
五、Docker常用命令

docker search --镜像名 搜索仓库镜像docker pull --镜像名 拉取镜像docker ps 查看目前正在运行的所有容器 (-a 显示包括已经停止的容器)docker rmi image_id/image_name 删除镜像docker build 使用Dockerfile创建镜像docker run 运行容器docker exec 进入容器中执行命令 (例如:docker exec -it container_id/container_name /bin/bash)docker logs container_id/container_name 查看容器日志(例如:docker logs -f -t --tail 10 container_id )docker start container_id/container_name 启动容器docker restart container_id/container_name 重启容器docker stop container_id/container_name 停止容器docker rm container_id/container_name 删除容器(只能删除已停止的容器)更多的命令可以通过docker help命令来查看。
六、安装Docker可视化管理工具Portainer
5.1 搜索镜像
docker search portainer

5.2 拉取镜像
#拉取镜像命令
docker pull portainer/portainer
#查看镜像命令
docker images

5.3 运行镜像(启动Portainer容器)
#创建数据卷
docker volume create portainer_data
#启动容器
docker run -d -p 9000:9000 --restart=always --name prtainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#查看启动中的容器
docker ps
启动参数说明:
-it 输出容器命令行的内容 即容器的自身的程序输出在控制台 有点类似前台运行-d 和it相反 隐藏后台运行-p 端口映射 9000::9000 外部(宿主机)端口:镜像里面运行的端口 将宿主机9000端口映射到镜像里面的9000端口--restart 重启方式:always跟随docker自启--name 启动后的容器名称-v 挂载容器数据卷--network 连接到某个网络(例如:--network test_net)--network-alias 容器的网络名称(例如:--network-alias portainer)

5.4 访问Portainer客户端
访问地址:http://192.168.0.128:9000,首次访问需要设置admin管理员登录密码
可查看我们的镜像
查看我们的容器
七、Docker Compose

用途
Docker Compose 的主要用途是简化多容器应用程序的部署流程。它允许开发者使用一个单一的命令来启动由多个容器组成的整个应用程序,而不需要分别启动每个容器。此外,它还支持配置服务之间的依赖关系、网络连接、数据卷挂载等,使得整个部署过程更加清晰和易于管理。
使用方法
使用 Docker Compose 的基本步骤如下:
- 安装 Docker Compose:首先需要在系统上安装 Docker Compose。可以访问 Docker 官方网站查看安装指南。(参考链接:https://www.cnblogs.com/goloving/p/16253880.html)
- 创建
docker-compose.yml文件:在这个文件中定义应用程序的服务、网络和卷。每个服务可以包含镜像、端口映射、环境变量、数据卷等配置。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html) - 运行 Docker Compose 命令:使用
docker-compose up命令来启动定义在docker-compose.yml文件中的所有服务。可以使用-d参数在后台运行服务。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html) - 管理服务:可以使用
docker-compose down来停止并删除容器、网络和卷,或者使用docker-compose start、docker-compose stop、docker-compose restart等命令来管理服务。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html)
使用例子
假设我们需要部署一个包含 Web 服务器和数据库的简单应用程序。我们可以创建一个如下的 docker-compose.yml 文件:
version: '3.7' # 使用的 Compose 文件版本
services: # 定义服务web: # 服务名称image: nginx:latest # 使用的镜像ports:- "8080:80" # 端口映射,宿主机端口:容器端口volumes:- ./index.html:/usr/share/nginx/html/index.html # 挂载当前目录下的 index.html 到容器中的指定位置db: # 另一个服务image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: example # 设置环境变量,这里为数据库的 root 密码volumes:- db_data:/var/lib/mysql # 挂载数据卷,保持数据持久化
volumes: # 定义数据卷db_data: # 数据卷名称
保存文件后,我们只需在终端中运行 docker-compose up 命令,Docker Compose 就会根据 docker-compose.yml 文件中的配置来创建并启动服务。这样,我们就可以通过访问 http://localhost:8080 来看到由 Nginx 服务器提供的网页,并且后端数据库也已经准备就绪
八、卸载Docker
#删除docker-ce命令
yum remove docker-ce
#删除镜像、容器、配置文件等内容
rm -rf /var/lib/containerd
rm -rf /var/lib/docker
#官网给出的卸载方式
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
相关文章:
Linux安装最新版Docker完整教程
参考官网地址:Install Docker Engine on CentOS | Docker Docs 一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.6 系统,内核版本为3.10 1.3 安装依赖包 …...
iOS object-c self关键字总结
在Objective-C中,self 关键字是一个指向当前对象的指针。它是对象自身实例的别名,通常在对象内部的方法中使用,以提供一个指向当前对象的引用。使用 self 可以帮助你访问对象的属性和方法,特别是在处理消息传递和方法调用时。 以…...
京东云16核64G云服务器租用优惠价格500元1个月、5168元一年,35M带宽
京东云16核64G云服务器租用优惠价格500元1个月、5168元一年,35M带宽,配置为:16C64G-450G SSD系统盘-35M带宽-8000G月流量 华北-北京,京东云活动页面 yunfuwuqiba.com/go/jd 活动链接打开如下图: 京东云16核64G云服务器…...
hive管理之ctl方式
hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 ! clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 !命令…...
cpp 内存分区模型
c程序在执行前,将内存大方向划分为4个区域。 1.代码区:存放函数的二进制代码,有操作系统进行管理 2.全局区:存放全局变量和静态变量以及常量 3.栈区:由编译器自动分配释放,存放的函数参数和局部变量 4.…...
44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…...
web安全学习笔记(6)
记一下第十节课的内容。 一.PHP语言中的if else判断 语法和c语言中非常类似,不再赘述,也可以使用if...elseif...elseif...else 1.True和False 2.,和 一个等号是赋值 两个等号是比较 三个等号是全等(内容相等,数…...
揭秘“二次放号查询接口”:为您的通信安全保驾护航
在信息化社会中,手机号码已成为我们日常生活中不可或缺的身份标识。然而,您是否了解过“二次放号”这一现象,以及它可能对您的信息安全带来的影响?今天,我们将为您揭开“二次放号查询接口”的神秘面纱,揭示…...
字节8年经验之谈 —— 如何实现高效的自动化渗透测试?
随着当前网络安全威胁的不断扩展与升级,开展渗透测试工作已经成为广大企业组织主动识别安全漏洞与潜在风险的关键过程。然而,传统的人工渗透测试模式对测试人员的专业能力和经验水平有很高的要求,企业需要投入较大的时间和资源才能完成。在此…...
ElasticSearch分词检索
1. 倒排索引:表示一种数据结构,分词词条与文档id集合的隐射关系 2. 它跟关系型数据库是一种互补的关系,因为关系型数据库支持事务操作,满足ACID原则 3. 索引库的文档字段只允许新增不允许修改 1.创建索引库 put /索引库名称2.1 …...
每日三道面试题之 Java并发编程 (四)
1.什么是线程死锁 线程死锁是并发编程中一个常见问题,它发生在两个或多个线程永久性地阻塞彼此,等待对方释放锁,但没有任何一方先行释放锁的情况下。简单来说,每个线程都持有对方需要的资源而等待对方释放资源,导致所…...
ubuntu20.04.6将虚拟机用户目录映射为磁盘Z
文章目录 linux虚拟机设置为NAT模式安装sshd服务映射目录到windows磁盘安装samba套件修改配置文件smb.conf重启smbd并设置用户名和密码 windows映射遇到的问题1、设置好之后映射不成功2、smbd下载失败3、smbd密码配置问题4、当有改动时候,最好重启一下smbd服务 linu…...
TCP挥手中TIME_WAIT存在的原因
四次挥手的一般过程如图所示: 在客户端收到FIN结束报文的时候不是立刻进入CLOSED状态,而是进入TIME_WAIT状态,一般等2MLS后进入关闭状态。 原因: 1.可靠地终止 TCP 连接。 2.保证让迟来的 TCP报文段有足够的时间被识别并丢弃。 …...
使用Docker部署jar包
vi DockerfileDockerfile内容 FROM java:8 ADD chery5G-admin.jar chery5G-admin.jar ENTRYPOINT ["java","-jar","chery5G-admin.jar"]上传jar包到Dockerfile文件同级目录 使用Dockerfile文件,将jar包制作为镜像 docker build -t…...
深入了解WebKit:结构简介
随着互联网的发展,网页浏览器已经成为我们日常生活中不可或缺的工具之一。而在众多浏览器中,WebKit引擎作为其中之一的重要角色,驱动着一系列流行的浏览器,例如Safari和一些移动端浏览器。那么,WebKit究竟是如何构建的…...
Pgsql怎样找到表中某个字段值重复的记录并删除冗余记录,只保留一条
背景 今天发现某个黄页爬取的数据有部分重复了,原本我用的公司详情页的url进行md5来作为主键做upsert入,但后面在核验数据时发现有些详情url虽是同一间公司的,但路由上有细微差别导致写入了重复的公司数据,所以要想办法清理掉重复…...
如何在HarmonyOS(鸿蒙操作系统)上进行应用开发
文章中提到的关键点包括: 学习ArkTS:作者建议初学者首先学习使用ArkTS编写Hello World程序,并可以通过TypeScript教程来快速掌握基础语法。对于有Flutter或React Native开发经验的开发者来说,页面布局会比较容易上手。 页面布局&…...
C++ typeid运算符介绍
在 C++ 中,typeid() 是一个运算符,用于获取表达式的类型信息。typeid() 运算符在 C++ 中是一个强大的工具,可以用于获取对象的类型信息、类型比较、多态类型判断、异常处理以及类型转换安全检查等场景中。 1. 类型比较: 可以使用 typeid() 来比较两个类型是否相同。 if …...
Android适配平板屏幕尺寸
一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸: 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件,我们可以追加新的资源目录到你的Android项目中。命名规范: 资源名字-限制符 l…...
汽车充电桩主板在出厂前需要做哪些检测?
充电桩主板作为核心组件承载着充电桩的关键功能,其性能和稳定性直接影响着用户充电体验、桩企产品合规和市场竞争力,以及主板厂商的品牌知名度。因此,对充电桩主板进行全面的测试尤为重要。 下面将详细介绍充电桩主板检测的内容,包…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
