【Docker】Docker的安装、使用(安装nginx、mysql、redis)、配置加速镜像、项目部署;查看lastest镜像具体版本并改tag

news2026/4/4 15:03:12
Docker的安装官方文档Docker DocsDocker HubDocker Hub Container Image Library | App Containerizationcentos7安装1、安装清华镜像站docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror镜像站中用的命令是dnf这是centos8之后的不太合适我这个用centos7的Linux下CentOS安装Docker并配置阿里云镜像加速-开发者社区-阿里云大部分参考这个文档在 CentOS 7 上应该使用yum 安装 yum-utils对应文档中的 dnf-plugins-coresudo yum install -y yum-utils清华镜像站文档里面的dnf是centos8之后的新命令直接添加清华大学的 Docker 仓库配置文件sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo可以看到Docker 源指向官方地址 download.docker.com说明Docker 自身的 RPM 包仍然试图从官方源下载cat /etc/yum.repos.d/docker-ce.repo所以要替换为阿里云 Docker 镜像源sudo sed -i s|download.docker.com|mirrors.aliyun.com/docker-ce|g /etc/yum.repos.d/docker-ce.repo最后就能成功安装sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin2、启动并开机自启docker在按照文档内容安装完毕后启动并开机自启dockersudo systemctl start docker sudo systemctl enable docker3、配置加速因为docker默认下载镜像是从docker hub中下载可以配置国内的镜像加速我参考了这个文档复制了里面的源配置Docker镜像源解决pull时context deadline exceeded报错-开发者社区-阿里云vim /etc/docker/daemon.json{ registry-mirrors: [ https://docker.registry.cyou, https://docker-cf.registry.cyou, https://dockercf.jsdelivr.fyi, https://docker.jsdelivr.fyi, https://dockertest.jsdelivr.fyi, https://mirror.aliyuncs.com, https://dockerproxy.com, https://mirror.baidubce.com, https://docker.m.daocloud.io, https://docker.nju.edu.cn, https://docker.mirrors.sjtug.sjtu.edu.cn, https://docker.mirrors.ustc.edu.cn, https://mirror.iscas.ac.cn, https://docker.rainbond.cc, https://do.nark.eu.org, https://dc.j8.work, https://dockerproxy.com, https://gst6rzl9.mirror.aliyuncs.com, https://registry.docker-cn.com, http://hub-mirror.c.163.com, http://mirrors.ustc.edu.cn/, https://mirrors.tuna.tsinghua.edu.cn/, http://mirrors.sohu.com/ ], insecure-registries: [ registry.docker-cn.com, docker.mirrors.ustc.edu.cn ], debug: true, experimental: false }重载sudo systemctl daemon-reload重启服务sudo systemctl restart dockerrocky9安装1、安装清华镜像站docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror2、启动并开机自启docker在按照文档内容安装完毕后启动并开机自启dockersudo systemctl start docker sudo systemctl enable docker3、配置加速配置Docker镜像源解决pull时context deadline exceeded报错-开发者社区-阿里云vim /etc/docker/daemon.json{ registry-mirrors: [ https://docker.registry.cyou, https://docker-cf.registry.cyou, https://dockercf.jsdelivr.fyi, https://docker.jsdelivr.fyi, https://dockertest.jsdelivr.fyi, https://mirror.aliyuncs.com, https://dockerproxy.com, https://mirror.baidubce.com, https://docker.m.daocloud.io, https://docker.nju.edu.cn, https://docker.mirrors.sjtug.sjtu.edu.cn, https://docker.mirrors.ustc.edu.cn, https://mirror.iscas.ac.cn, https://docker.rainbond.cc, https://do.nark.eu.org, https://dc.j8.work, https://dockerproxy.com, https://gst6rzl9.mirror.aliyuncs.com, https://registry.docker-cn.com, http://hub-mirror.c.163.com, http://mirrors.ustc.edu.cn/, https://mirrors.tuna.tsinghua.edu.cn/, http://mirrors.sohu.com/ ], insecure-registries: [ registry.docker-cn.com, docker.mirrors.ustc.edu.cn ], debug: true, experimental: false }重载sudo systemctl daemon-reload重启服务sudo systemctl restart dockerDocker部署部署mysql挂载的那些太麻烦所以我直接运行docker run -d \ -p 3306:3306 \ --name mysql \ --restartalways \ -e MYSQL_ROOT_PASSWORD123456 \ mysql:8.0部署redis11、环境-docker安装redis_哔哩哔哩_bilibili1、创建文件mkdir -p /mydata/redis/data2、运行这里只挂载了数据--appendonly yes开启持久化AOF模式保证数据写入硬盘--requirepass 123456直接设置密码为 123456docker run -d \ --name redis \ -p 6379:6379 \ -v /mydata/redis/data:/data \ redis:8.0.6 \ redis-server --appendonly yes --requirepass 123456查看lastest镜像具体版本并改tag如果直接下载lastest会不知道版本docker image inspect 镜像:latest | grep -i version修改tagdocker tag 源镜像名:源标签 目标镜像名:目标标签 如 docker tag nacos/nacos-server:latest nacos/nacos-server:3.2.1查看本地镜像列表会有两个IMAGE ID是一模一样的。这意味着它们指向的是同一个镜像文件不会多占用任何磁盘空间。确认打好新标签且运行正常后你甚至可以删掉 latest 这个标签只是删标签不会删镜像文件Docker的使用Docker-01.Docker课程介绍_哔哩哔哩_bilibilip22~32镜和容器命令解读-d让容器在后台运行不加命令执行完会卡也那里不会结束。就比如cmd命令运行了程序 一直在那里等待等待程序的执行可能会输出一些日志如果强行通过ctrlc停止命令停止进程也会停止-- name给容器起名字-pport。端口映射前面宿主机端口后面容器内端口-eenvironment镜像命名规范常见命令官方文档Docker Docsdocker pull拉取就是把远端镜像拉取到本地本地就会下载镜像docker imagesimage镜像images就是查看所有的本地镜像docker rmi删除本地镜像rmremoveiimagedocker build自定义构建镜像将打包好的镜像通过docker save命令保存到本地变成一个压缩文件可以通过docker push推到镜像仓库docker run创建并运行容器如果发现镜像不存在会先拉取拉取完再自动创建容器运行。注意它是创建并运行容器每次执行都会创建一个新的容器不要和docker start搞混docker start只是去启动停止的容器进程docker stop把容器停止停止的是容器内部的进程。比如mysql的容器相当于把里面的mysql进程停止但容器还在。容器是一个隔离环境有独立的网络、独立的文件系统、独立的内存空间docker start把容器内部停止的进程启动docker pspsprocess status查看当前容器的运行状态docker rm删除容器要先停止容器再删除或者docker rm mysql -f 或者docker rm -f mysql加上-f强制删除docker logs查看容器运行的日志。如docker logs -f nginx。后面加上-f表示follow持续输出日志。调试时可以用docker exec去执行一些命令进入容器的内部-it添加可交互的终端。如docker exec -it nginx bash进入nginx内部用bash进行交互容器是一个隔离环境采用命令行交互需要终端。退出用exit例container id容器id运行docker run后返回的部分数字image指定容器用的是哪个镜像command内部运行时的启动命令created创建时间statusup代表启动中ports端口映射names容器名命令别名查看docker中的进程状态使用docker ps命令。但内容很多用--format对输出内容进行格式化但命令太长了用命令别名简化/root目录下/root可以用~代替有系统自带的别名rm、cp、mv这里自己设置两个别名退出后用命令生效数据卷引入docker的镜像准备了运行所需要的系统函数库、系统环境但是只包含当前镜像对应应用运行必备的系统的函数nginx容器nginx镜像包含nginx运行所需要的系统函数库和依赖。没有ll、vi等所有的镜像都是最小化的系统环境只包含运行所必须的在容器内修改文件困难使用数据卷数据卷介绍宿主机目录和数据卷进行映射数据卷又和容器目录进行映射所以宿主机目录间接和容器目录产生映射关系实现双向映射以后只需要改宿主机的文件同时也能改容器命令命令行使用docker volume --help查看或者查看文档数据卷挂载nginx总结本地目录挂载mysql容器两种挂载方式匿名卷docker inspect查容器的详情docker volume inspect查数据卷的详情Mounts挂载Type挂载方式volume代表卷Name名字Source这个卷对应的宿主机的目录Destination挂载到的容器内的目录在创建mysql没有创建数据卷但它有。不是我们创建的卷由容器运行时自动创建的卷叫做匿名卷Name名字是自动生成的mysql将它的数据存储目录挂载到宿主机因为mysql在运行过程中不断产生数据如果不挂载这些数据都保存在容器内的文件系统里将来这个容器的体积会越来越大不方便容器迁移出于对数据解耦的考虑就挂载出来了带来的问题使用匿名卷随机生成的名字很长加入想对mysql版本升级需要把旧的mysql容器删除然后创建新的mysql容器删除后数据卷还在数据也还在但重新创建mysql新版本容器时生成的卷的名字就变了原来的数据在旧的卷里就等于是丢失了数据没有真正迁移可以进到旧的卷里把数据拷贝过去。但是卷名太长目录很深操作不便挂载到自己设置的目录哪怕把mysql容器删了数据还在。实现数据持久保存查看官方文档明确目录所在位置查看官方文档在docker hub上得知mysql的配置文件在/etc/mysql/conf.d放初始化脚本的文件放数据的文件步骤挂载自动创建容器并在创建容器时挂载注意看文档这些目录是否正确比如谷粒商城的视频就太久了目录不对docker run -d \ --name mysql \ -p 3306:3306 \ -e TZAsia/Shanghai \ -e MYSQL_ROOT_PASSWORDroot \ -v /root/mysql/data:/var/lib/mysql \ -v /root/mysql/init:/docker-entrypoint-initdb.d \ -v /root/mysql/conf:/etc/mysql/conf.d \ mysql远程连接mysql数据库两步需要关闭虚拟机防火墙开启msyql远程连接的权限自定义镜像镜像结构每一步步骤都会产生一些文件docker去制作镜像时不是把每一个产生的文件合并在一起打成一个包作为镜像的而是把每一步操作产生的文件分别打成压缩包作为镜像的一部分最终合在一起是完整的镜像分层好处1可以共享某些基础的层。很多镜像在制作时发现前几层类型直接用别人的了像这样的起始的基础的镜像叫做基础镜像好处2下载时如果A镜像和B镜像前两层一样docker会先检查前两层在本地有没有直接下后面本地存的体积也减小了Dockerfile官网文档Dockerfile reference | Docker Docs只需要描述清楚镜像的结构入口、基础、中间的层然后docker自动完成镜像构建使用dockerfile告诉docker镜像结构在docker公共仓库里有很多制作好的基础镜像只需要用from说明从哪开始​可以基于JDK为基础镜像设置时区。如果不做时区就不是东八区而是中时区和国内时间有差异日志或数据库内产生的数据会有差异​​总结网络容器网络互联视频中查看不同容器的详细信息172.17.0.2、172.17.0.3等等ip只有最后一位不同说明这几个容器在一个网段中。在一个网段中说明可以互相访问docker容器都是自己独立的隔离空间还有相同网段可以相互访问因为它们都有相同网站GateWay安装docker的那一刻docker会在虚拟机里创建一张虚拟的网卡默认叫docker0并且给网卡创建虚拟的网桥172.17.0.1/16/16表示这个ip地址前16位不能动ip地址每一段最大值255即8bit位前16位不能动即前两端不能动。后面就可以增​自定义网络ip地址是docker网桥分配的假如服务重启这个过程中其他容器也启动ip可能被别人占有比如mysql在java代码中配了地址但ip地址变了将来连不上创建自定义网络会形成一个新的网桥新的网桥网段就和docker0不一样了只有加入自定义网络的容器可以通过容器名互相访问不需要知道ip地址​创建网络先创建一个网络发现多了一个网络使用ip addr除了docker0之外又多了一个新的网卡这个网卡是18网段加入网络可以在创建容器时加入网络在创建时指定了就不会再加入默认网段了如果已经创建了再加入网络会两个都加入因为1是网关所以从2开始递增以后可以直接用容器名访问只要加入同一个网络就可以通过容器名访问项目部署视频黑马程序员SpringCloud微服务p33~35Docker-12.项目部署-部署Java应用_哔哩哔哩_bilibili部署Java应用修改项目需要先修改项目因为项目使用的mybatis-plus和knife4j等已经是旧版本的了很多地方需要修改将项目在本地运行成功之后再进行之后的步骤两个mysql驱动在原项目中mysql驱动放在父模块的pom文件中我试了有问题hm-common和hm-serveice都需要mysql驱动所以把父模块的mysql删除然后分别导入两个子模块配置local的application在application中配置本地运行环境dockerfile原项目使用的是jdk11但我用的是jdk17所以要修改基础镜像我本来直接把原项目中的11改成17但拉取不了镜像所以直接安装了完整镜像docker pull openjdk:17所以dockerfile文件中使用基础镜像的部分也要修改让它优先使用本地的镜像禁止hm-common 打包部署打包不要把test打包进来打包之后在target目录下会有jar包移入虚拟机把jar包和dockerfile移入虚拟机然后构建创建容器创建容器时连接网段docker logs hm查看日志访问通过虚拟机和设置的端口访问注意application中配置的端口部署前端DockerComposeversion: 3.8 services: mysql: image: mysql container_name: mysql ports: - 3306:3306 environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: root volumes: - ./mysql/conf:/etc/mysql/conf.d - ./mysql/data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d networks: - hm-net hmall: build: context: . dockerfile: Dockerfile container_name: hmall ports: - 8080:8080 networks: - hm-net depends_on: - mysql nginx: image: nginx container_name: nginx ports: - 18080:18080 - 18081:18081 volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/html:/usr/share/nginx/html depends_on: - hmall networks: - hm-net networks: hm-net: name: hmall命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2482586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…