一小时学会Docker使用!
文章目录
- 前言
- 一、安装ssh连接工具
- 二、安装docker
- 三、Docker常见命令
- 四、docker-compose使用
前言
Docker:
Docker简单来说就是简化环境配置的,我们配置环境只需要简单的docker pull,docker run即可,而删除环境也很容易,减少了运维和开发人员工作量。
Docker-compose:
Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的API来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用Compose 来进行编排管理。
前置操作:
Docker一定是在Linux环境下运行的,因此必须会linux。
我们操作环境是ubuntu22.04。
首先要安装ubuntu,我们需要先安装一下ssh环境,方便后期使用ssh工具连接。
一、安装ssh连接工具
- 安装 OpenSSH 服务器
首先,安装 openssh-server
包,它包含了SSH服务端:
sudo apt update
sudo apt install openssh-server
- 启动 SSH 服务
安装完成后,启动SSH服务:
sudo systemctl start ssh
- 配置 SSH 服务自启动
为了确保每次系统启动时都自动启动SSH服务,可以设置SSH服务开机自启:
sudo systemctl enable ssh
- 检查 SSH 服务状态
确认SSH服务是否正在运行:
sudo systemctl status ssh
如果SSH服务运行正常,你会看到类似 active (running)
的状态。
- 配置防火墙
如果你的系统启用了防火墙(如ufw
),你可能需要允许SSH流量。运行以下命令允许SSH通过防火墙:
sudo ufw allow ssh
然后,启用防火墙(如果还没有启用):
sudo ufw enable
- 检查 SSH 端口
默认情况下,SSH使用端口22。如果你的SSH服务没有使用默认端口或者被防火墙阻止,你需要确认是否正确配置了SSH端口。
可以查看SSH配置文件 /etc/ssh/sshd_config
中的端口设置:
sudo nano /etc/ssh/sshd_config
检查 Port
配置项,确保其设置为 22
或你希望使用的其他端口。修改后,重新加载SSH服务:
sudo systemctl reload ssh
- 连接到SSH
安装和配置完成后,你可以使用SSH客户端连接到你的Ubuntu服务器。假设服务器的IP地址是 192.168.138.xxx
,使用以下命令:
ssh username@192.168.138.xxx
二、安装docker
- 更新现有的包
首先,确保你的包列表是最新的,并且安装了必要的依赖项:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 添加Docker的官方GPG密钥
下载并添加Docker的官方GPG密钥:
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加Docker官方的APT源
添加Docker的APT源到你的系统:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新APT包索引
记得关闭防火墙 :
sudo systemctl stop firewall
再次更新包索引以从Docker官方源中获取包:
sudo apt update
- 安装Docker引擎
安装Docker引擎(Docker CE):
sudo apt install docker-ce
- 启动并启用Docker
安装完成后,启动Docker并设置它在系统启动时自动启动:
sudo systemctl start docker
sudo systemctl enable docker
- 验证Docker安装
运行以下命令来验证Docker是否安装成功:
sudo docker --version
运行结果:
显示这样的结果代表docker安装成功
8、安装docker-compose
下载docker-compose二进制文件:
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
验证:
docker-compose --version
运行结果:
三、Docker常见命令
①、拉取镜像
docker pull 镜像名:版本号
eg:
docker pull mysql:8.0.23
②、查看当前所有镜像
docker images
③、运行容器
这里以一个命令为例,讲解所有参数的含义。
docker run -d --name mysql -p 3306:3306 -v /home/sxc/mysql8/data:/var/lib/mysql -v /home/sxc/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=123456 --restart=always mysql:8.0.23
首先最简单的是:docker run mysql:8.0.23
-
-d:表示容器会在后台运行,不占用当前终端。
-
– --name=mysql表示运行后容器的名字,如果不指定,会默认为镜像名,即mysql:8.0.23
-
-p 3306:3306,这里是指端口映射,注意先后顺序,前面端口是宿主机的端口,后面是docker镜像的端口。
-
-v /home/sxc/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf 表示将目录挂载,前面是宿主机的目录,后面是docker容器内的目录,即宿主机的/home/sxc/mysql8/my.cnf和mysql镜像的/etc/mysql/conf.d/my.cnf目录的变化会一直,方便我们修改容器的配置文件,这样修改的时候直接在宿主机修改即可,-v可以有多个。
-
-e MYSQL_ROOT_PASSWORD=123456,其中-e参数表示设置环境变量,MYSQL_ROOT_PASSWORD=123456表示设置mysql的root用户密码为123456
-
– --restart=always 表示该容器永远开机自启动。
④、查看当前运行容器
docker ps
可以看到最左边这个是容器ID,是唯一的后面会用到。
⑤、停止容器运行
docker stop 容器名
⑥、启动/重启容器
docker start 容器名docker restart 容器名
⑦、进入容器内部
docker exec -it 容器名 终端名
可以看到,我们进入了mysql容器内部。
退出容器内部的命令是:
exit
⑧、删除容器
docker rm -f 容器名
-f 表示强制删除
可以看到之前run的容器被删除了,因此restart的时候显示error。
⑨、删除镜像
docker rmi 镜像名
-f 表示强制删除
可以看到,此时镜像被删除了。
四、docker-compose使用
①、安装docker-compose
下载docker-compose二进制文件:
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
验证:
docker-compose --version
运行结果:
显示这样就表示安装成功了。
一般docker-compose安装在 /usr/local/bin目录下面。
②、docker-compose.yml配置
而我们如果像原来docker一样一个一个拉取镜像的话,效率太慢,因此我们可以将要拉取的环境配置到docker-compose.yml文件中,这样只需要按照文件运行,docker就会一个一个的帮我们拉取镜像并运行容器了。
我们以下面这个文件举例:
我这里在/home/sxc/docker-compose目录下面创建了一个docker-compose.yml文件,文件内容如下:
version: '2.1'services:nginx:image: nginx:latestcontainer_name: nginx_host1ports:- 8081:80volumes:- /opt/nginx:/opt/nginx/htmlnetworks:- host1-networkredis:image: redis:latestcontainer_name: redis_host1ports:- 63790:6379networks:- host1-networknetworks:host1-network:driver: bridgeipam:driver: defaultconfig:- subnet: 192.168.11.0/24gateway: 192.168.11.254
注意执行docker-compose up -d命令的时候,一定要在与docker-compose.yml文件同一个目录下执行才可以。
运行结果:
可以看到直接帮我们拉取镜像并运行容器了。
相关文章:
一小时学会Docker使用!
文章目录 前言一、安装ssh连接工具二、安装docker三、Docker常见命令四、docker-compose使用 前言 Docker: Docker简单来说就是简化环境配置的,我们配置环境只需要简单的docker pull,docker run即可,而删除环境也很容易ÿ…...
android studio开发aar插件,并用uniapp开发APP使用这个aar
android studio开发aar插件,并用uniapp开发APP使用这个aar 使用android studio打包aar和Unity导入aar详解...
操作系统实战——QEMU模拟器搭建【rCore 操作系统】
操作系统大作业——QEMU模拟器搭建rCore操作系统 按照本篇步骤走,帮你少走很多弯路!博主在自己做的过程中踩了很多坑,过程还是很痛苦的,走了很多弯路,现在都已经在文章中把坑填平了,把弯路修直了。 创作不易…...
web:InfiniteScroll 无限滚动
InfiniteScroll 无限滚动 分页加载 <div class"data-box" v-infinite-scroll"loadMore"> <li v-fori in dataList></li> </div>form: {current: 1,size: 10,}loadMore(){console.log(this.dataList.length, this.total ,8888)if…...
【Redis 进阶】哨兵模式
思维导图: 一、哨兵模式概述 (一)传统主从复制模式的局限性 在传统的Redis主从复制架构中,若主节点发生故障,运维人员需手动执行故障转移操作,将一个从节点提升为新主节点,并逐一通知所有客户…...
告别卡顿,图片查看界的“速度与激情”
嘿,小伙伴们!今天电脑天空给大家介绍一款超好用的图片查看神器——ImageGlass!这可不是普通的图片查看软件哦,它简直就是图片界的“全能王”。首先,它能打开的图片格式多到让你眼花缭乱,什么PNG、JPEG、GIF…...
02_线性模型(回归分类模型)
用于分类的线性模型 线性模型也广泛应用于分类问题,可以利用下面的公式进行预测: $ \widehat y w[0]*x[0]w[1]*x[1]…w[p]*x[p]b > 0$ 公式看起来与线性回归的公式非常相似,但没有返回特征的加权求和,而是为预测设置了阈值…...
力扣2094题解
记录: 2025.5.12 题目: 思路: 暴力遍历。 解题步骤: 1.统计数字出现次数:使用数组cnt来记录输入数组中每个数字的出现次数。 2.生成三位偶数:通过循环从100开始,每次递增2,生成…...
人物角色设定机制
模块一:角色塑造进阶技巧 将角色设定(Character Headcanon)提升至更高层次 当您通过Character Headcanon Generator生成基础设定后,可运用以下专业技巧深化角色塑造: 情感核心图谱分析法 解构角色情感驱动机制及其情境表现: 主…...
Python动态渲染页面抓取之Selenium使用指南
目录 一、Selenium技术架构解析 二、环境搭建与基础配置 1. 组件安装 2. 驱动配置 3. 基础操作模板 三、动态内容抓取核心策略 1. 智能等待机制 2. 交互行为模拟 3. 反爬应对方案 四、实战案例:电商评论抓取 五、性能优化与异常处理 2. 异常捕获 六、进…...
智能手表 MCU 任务调度图
智能手表 MCU 任务调度图 处理器平台:ARM Cortex-M33 系统架构:事件驱动 多任务 RTOS RTOS:FreeRTOS(或同类实时内核) 一、任务调度概览 任务名称优先级周期性功能描述App_MainTask中否主循环调度器,系统…...
【C++】cout的格式输出
目录 一、cout的格式输出1、控制宽度和填充2、控制数值格式3、控制整数格式4、控制对齐方式 个人主页<—请点击 C专栏<—请点击 一、cout的格式输出 printf函数在输出数据的时候,可以指定格式来输出,比如:指定宽度、指定小数点后的位…...
私域流量新阵地:掌握Telegram私域运营全方法
在流量获取成本不断上升的今天,越来越多企业和品牌开始将目光转向“私域流量”——一条可以长期沉淀用户、反复转化的可持续增长之路。而在全球化趋势下,Telegram作为一款以高自由度、强隐私性著称的即时通讯平台,正在成为私域运营的新阵地。…...
Python Day23 学习
继续SHAP图绘制的学习 1. SHAP特征重要性条形图 特征重要性条形图(Feature Importance Bar Plot)是 SHAP 提供的一种全局解释工具,用于展示模型中各个特征对预测结果的重要性。以下是详细解释: 图的含义 - 横轴:表示…...
《ATPL地面培训教材13:飞行原理》——第12章:飞行力学基础
翻译:Leweslyh;工具:Cursor & Cluade 3.7;过程稿 第12章:飞行力学基础 目录 引言直线水平稳定飞行尾翼和升降舵直线稳定爬升爬升角重量、高度和温度的影响带动力下降紧急下降滑翔滑翔下降率转弯非对称推力飞行最…...
数据中台整体建设方案规划设计方案,数据中台建设汇报方案(PPT)
中台建设背景 在数字化转型浪潮下,企业需通过客户需求精准化、营销策略智能化、管理体系数字化三大核心方向构建竞争优势。本项目以渠道数据整合为基础,围绕客户精准化运营、营销智能化决策、管理数字化赋能三大目标,打造支撑一线业务场景的数…...
嵌入式软件--stm32 DAY 6 USART串口通讯(下)
1.寄存器轮询_收发字符串 通过寄存器轮询方式实现了收发单个字节之后,我们趁热打铁,争上游,进阶到字符串。字符串就是多个字符。很明显可以循环收发单个字节实现。 然后就是接收字符串。如果接受单个字符的函数放在while里,它也可…...
Flask如何读取配置信息
目录 一、使用 app.config 读取配置 二、设置配置的几种方式 1. 直接设置 2. 从 Python 文件加载 3. 从环境变量加载 4. 从字典加载 5. 从 .env 文件加载(推荐开发环境用) 三、读取配置值 四、最佳实践建议 在 Flask 中读取配置信息有几种常见方…...
AWS EC2源代码安装valkey命令行客户端
sudo yum -y install openssl-devel gcc wget https://github.com/valkey-io/valkey/archive/refs/tags/8.1.1.tar.gz tar xvzf 8.1.1.tar.gz cd valkey-8.1.1/ make distclean make valkey-cli BUILD_TLSyes参考 Connecting to nodes...
项目全栈实战-基于智能体、工作流、API模块化Docker集成的创业分析平台
目录 思维导图 前置知识 Docker是什么? Docker的核心概念: Docker在本项目中的作用 1. 环境隔离与一致性 2. 简化部署流程 3. 资源管理与扩展性 4. 服务整合与通信 5. 版本控制和回滚 6. 开发与生产环境一致性 总结 前端 1.小程序 2.web …...
如何快速入门大模型?
学习大模型的流程是什么 ? 提示词工程:只需掌握提问技巧即可使用大模型,通过优化提问方式获得更精准的模型输出套壳应用开发:在大模型生态上开发业务层产品(如AI主播、AI小助手等),只需调用API…...
《Flutter社交应用暗黑奥秘:模式适配与色彩的艺术》
暗黑模式已从一种新奇的功能演变为用户体验中不可或缺的一环。对于Flutter开发者而言,如何在社交应用中完美实现暗黑模式适配与色彩对比度优化,是一场充满挑战与惊喜的技术探索之旅。 暗黑模式,绝非仅仅是将界面颜色反转这么简单。从用户体验…...
【秣厉科技】LabVIEW工具包——OpenCV 教程(21):CUDA 加速方案
文章目录 前言一、方案总述二、改造步骤三、编程范例四、应用移植总结 前言 需要下载安装OpenCV工具包的朋友,请前往 此处 ;系统要求:Windows系统,LabVIEW>2018,兼容32位和64位。 一、方案总述 为了保持轻量化与普…...
flutter使用命令生成BinarySize分析图
flutter build ios --analyze-size 生成的文件,使用dev tools 可以分析具体的包大小...
高并发场景下的BI架构设计:衡石分布式查询引擎与缓存分级策略
在电商大促、金融交易时段或IoT实时监控场景中,企业BI系统常面临瞬时万级并发查询的冲击——运营团队需要实时追踪GMV波动,风控部门需秒级响应欺诈检测,产线监控需毫秒级反馈设备状态。传统单体架构的BI系统在此类场景下极易崩溃,…...
web 自动化之 selenium 下拉鼠标键盘文件上传
文章目录 一、下拉框操作二、键盘操作三、鼠标操作四、日期控件五、滚动条操作六、文件上传七、定位windows窗口及窗口的元素总结:页面及元素常用操作 一、下拉框操作 from selenium.webdriver.support.select import Select import time from selenium.webdriver.…...
Qt Creator 配置 Android 编译环境
Qt Creator 配置 Android 编译环境 环境配置流程下载JDK修改Qt Creator默认android配置文件修改sdk_definitions.json配置修改的内容 Qt Creator配置异常处理删除提示占用编译报错 环境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, Qt这个开发环境有点难折腾,搞了我三天… 配…...
主流编程语言中ORM工具全解析
在不同编程语言中,ORM(Object-Relational Mapping,对象关系映射)工具的设计目标都是简化数据库操作。 以下是主流语言中最常用的 ORM 工具,按语言分类介绍其特点、适用场景和典型案例。 一、Python 生态 Python 社区…...
详解RabbitMQ工作模式之发布确认模式
目录 发布确认模式 概述 消息丢失问题 发布确认的三种模式 实现步骤 应用场景 代码案例 引入依赖 常量类 单条确认 运行代码 批量确认 运行代码 异步确认 运行代码 对比批量确认和异步确认模式 发布确认模式 概述 发布确认模式用于确保消息已…...
Power BI 实操案例,将度量值转化为切片器(动态切换分析指标)
Power BI 实操案例,将度量值转化为切片器(动态切换分析指标) 想要在Power BI中让度量值也能像维度一样灵活筛选?没问题,这里就为你揭秘如何将度量值转化为切片器(动态切换分析指标)的实用方法&…...
利用散点图探索宇航员特征与太空任务之间的关系
利用散点图探索宇航员特征与太空任务之间的关系 import matplotlib.pyplot as plt import numpy as np import pandas as pdfrom flexitext import flexitext from matplotlib.patches import FancyArrowPatchplt.rcParams.update({"font.family": "Corbel&quo…...
人工智能的哲学与社会影响
人工智能(AI)的快速发展对人类社会的方方面面产生了深远的影响。在这部分中,我们将探讨AI对人与机器关系的影响、AI对就业和经济的潜在影响,以及人类与AI共存的可能性和道德议题。同时,我们还将针对大众对AI的一些常见…...
MySQL 中 UPDATE 结合 SELECT 和 UPDATE CASE WHEN 的示例
概述 以下是 MySQL 中 UPDATE 结合 SELECT 和 UPDATE CASE WHEN 的示例: 一、UPDATE 结合 SELECT(跨表更新) 场景:根据 orders 表中的订单总金额,更新 users 表中用户的 total_spent 字段。 -- 创建测试表 CREATE T…...
FPGA前瞻篇-计数器设计与实现实例
这是本篇文章的设计目标如下所示: 这个 Counter 模块是一个LED 闪烁计数器,设计目标是: 当输入时钟 clk 为 50 MHz 时,每 0.5 秒翻转一次 LED 灯状态。 随后我们开始补充理论知识。 计数是一种最简单基本的运算,计数器…...
运行Spark程序-在Idea中(二)
(四)使用Maven创建新项目 核心的操作步骤如下: 1.启动idea,选择新建项目。 2.将Scala添加到全局库中。 3.设置maven依赖项。修改pom.xml文件,添加如下: 4.下载依赖。添加完成之后,刷新Maven,它…...
Mosaic数据增强技术
Mosaic 数据增强技术是一种在计算机视觉领域广泛应用的数据增强方法。下面是Mosaic 数据增强技术原理的详细介绍 一、原理 Mosaic 数据增强是将多张图像(通常是 4 张)按照一定的规则拼接在一起,形成一张新的图像。在拼接过程中,会…...
Kafka、RabbitMQ 和 RocketMQ区别及上手难度
Kafka、RabbitMQ 和 RocketMQ 是三种流行的消息中间件,它们在设计理念、使用场景和上手难度上有显著差异。以下是它们的核心区别和上手难度分析: 1. 核心区别 特性KafkaRabbitMQRocketMQ设计目标高吞吐、分布式日志流处理通用的消息队列,强调…...
.NET 8 + Angular WebSocket 高并发性能优化
.NET 8 Angular WebSocket 高并发性能优化。 .NET 8 WebSocket 高并发性能优化 WebSocket 是一种全双工通信协议,允许客户端和服务端之间保持持久连接。在高并发场景下,优化 WebSocket 的性能至关重要。以下是针对 .NET 8 中 WebSocket 高并发性能优化…...
SimScape物理建模实例1--单质量-弹簧-阻尼系统
实例1模型下载: 【免费】simscape单质量弹簧阻尼模型资源-CSDN文库 如下图所示单质量弹簧阻尼系统,弹簧具有初始压缩量,假设为1m, 质量块除了受到自身重力作用以外,受到弹簧拉力,以及阻尼器阻尼力,根据牛顿…...
5.5.1 WPF中的动画2-基于路径的动画
何为动画?一般只会动。但所谓会动,还不仅包括位置移动,还包括角度旋转,颜色变化,透明度增减。动画本质上是一个时间段内某个属性值(位置、颜色等)的变化。因为属性有很多数据类型,它们变化也需要多种动画类比如: BooleanAnimationBase\ ByteAnimationBase\DoubleAnima…...
JVM对象分配与程序崩溃排查
一、new 对象在 JVM 中的过程 在 JVM 中通过 new 关键字创建对象时,会经历以下步骤: 内存分配 对象的内存分配在 堆(Heap) 中,优先在 新生代(Young Generation) 的 Eden 区 分配。分配方式取决…...
基于RT-Thread驱动EEPROM_AD24C02
基于RT-Thread驱动EEPROM_AD24C02 前言一、硬件设计二、软件设计三、测试1、eeprom_test()测试2、基础操作字节实验3、多字节读写 前言 存储容量2048位,内部组织256x8(2K),即256个字节的存储单元ÿ…...
VUE中通过DOM导出PDF
最终效果 前端导出PDF的核心在于样式的绘制上,这里其实直接使用CSS进行绘制和布局就行,只不过需要计算好每页DIV盒子的大小,防止一页放不下造成样式错乱。 项目依赖 项目是Vue3 TS npm i html2canvas1.4.1 npm i jspdf3.0.1工具类(htmlToPdf…...
sql语句面经手撕(定制整理版)
一张表 店铺id 商品id 销售数量 问:查询总销售数量最多的店铺 SELECT shop_id,SUM(quantity) AS total_quantity FROM sales GROUP BY shop_id ORDER BY total_quantity DESC LIMIT 1; 学生总分名最高的 SELECT student_id,SUM(score) AS total_score FROM score…...
pdf 不是扫描件,但却无法搜索关键词【问题尝试解决未果记录】
一、不是扫描件但不能搜索的原因 1. 情况一:文字被转成了“图形文字” 有些PDF文件虽然看起来像是文字,其实是图片或者矢量图格式,不能直接搜索。 2. 情况二:PDF被加密 有些PDF设置了“内容复制/提取”权限受限,即使…...
android14优化ntp时间同步
简介 网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。 当机器的ntp时间同步出现问题时,可以从ntp配置方面进行优化&…...
【Ansible】之inventory主机清单
前言 本篇博客主要解释Ansible主机清单的相关配置知识 一、inventory 主机清单 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 如果是名称类似的主机,可以使用列表的方式表示各个主机…...
QT5.14安装以及新建基础项目
进入qt中文网站:Qt | 软件开发全周期的各阶段工具 额,考虑新手可能还是找不到,我就分享一下我下载的的吧 通过网盘分享的文件:qt-opensource-windows-x86-5.14.2.exe 链接:https://pan.baidu.com/s/1yQTRp-b_ISje5B3UWb7Apw?pw…...
Git 用法总结
换到新项目组后,没有好好使用git 。有点疲劳了。 不过还是建议能提尽提。少提 多提。与己方便。与人方便 1,拉取最新分支后。先不要直接改代码,可以根据修改需求。创建本地分支 git checkout -b feature/wlan 。 然后你改代码。改了后。合…...
付费专栏·Python潮流周刊电子书合集(epub、pdf、markdown)下载
付费专栏 Python 潮流周刊目前年费 148,全年约 50 期。 这里分享的是前 60 期的精美电子书,包含有多种不同版本(epub、pdf 和 markdown),免费下载(下载方式见文末)。 展示 pdf 版本的部分精美…...