5.2 镜像

KVM制作Ubuntu 22.04.5系统qcow2类型镜像 注意:如果Ubuntu KVM环境是VMware虚拟机,CPU需要开启虚拟化# 这里我用的是阿里云apt源root@localhost:~# apt -y updateroot@localhost:~# apt -y install qemu-kvm virt-manager libvirt-daemon-system libguestfs-toolsroot@localhost:~# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.confroot@localho 阅读详情


1. 构建镜像

构建镜像类似于一台电脑的装机过程,添加文件、安装软件、配置环境…

例如构建一个 tomcat 10 镜像流程,就像在一台电脑上安装配置 tomcat 环境一样:

  1. 选择基础镜像 centos:8(相当于一台新电脑,只有操作系统)
  2. 添加 jdk 和 tomcat 文件
  3. 设置环境变量
  4. 设置开机启动 tomcat

下面来演示构建 tomcat 10 镜像的过程:

1.1 准备必要的文件

jdk 和 tomcat 10 的压缩文件放入一个文件夹中,这个文件夹不应该包含其他无关文件:

[/root/tomcat/]
       - jdk-8u291-linux-x64.tar.gz
       - apache-tomcat-10.0.6.tar.gz

1.2 Dockerfile

Dockerfile 类似于一个批处理文件,用来设置镜像的构建流程

在上一步的 tomcat 文件夹下创建 Dockerfile 文件:

[/root/tomcat/]
       - jdk-8u291-linux-x64.tar.gz
       - apache-tomcat-10.0.6.tar.gz
       - Dockerfile

编辑 Dockerfile 文件

cd /root/tomcat

vim Dockerfile

在文件中添加以下内容:

# 选择基础镜像
FROM centos:8

# jdk 和 tomcat 文件添加到镜像的 /usr/local/ 目录下
# ADD 指令会自动解压文件
ADD jdk-8u291-linux-x64.tar.gz apache-tomcat-10.0.6.tar.gz /usr/local/

# 切换到镜像中指定的文件夹下
WORKDIR /usr/local/apache-tomcat-10.0.6/

# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_291 \
    CATALINA_HOME=/usr/local/apache-tomcat-10.0.6 \
    PATH=/usr/local/jdk1.8.0_291/bin:/usr/local/apache-tomcat-10.0.6/bin:$PATH

# EXPOSE 8080 只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
# 这个声明有两个好处:
#   1.帮助镜像使用者理解这个镜像服务的端口,以方便配置映射
#   2.在运行时使用随机端口映射时,也就是 docker run -P时,会自动随机映射 EXPOSE 的端口(-P参数5.3 文件挂载及网络 会介绍)
EXPOSE 8080

# 设置启动命令
CMD ["catalina.sh", "run"]

Dockerfile 指令参考手册:https://docs.docker.com/engine/reference/builder/

1.3 执行构建

进入 tomcat 文件夹,并在当前文件夹下找到 Dockerfile 和其他需要的文件,来构建镜像:

cd /root/tomcat

# 使用当前文件夹中的 Dockerfile 文件进行构建
# -t 给新构建的镜像指定命名为 tomcat:10
# 构建路径设置为当前目录 ./
docker build -t tomcat:10 ./

查看构建结果:

docker images

docker history tomcat:10

docker inspect tomcat:10

在这里插入图片描述

1.4 启动容器

docker run -d --name cat1 -p 8080:8080 tomcat:10

docker ps -a

docker logs cat1

浏览器访问测试:http://192.168.64.150:8080

2.镜像

2.1 镜像的名称

镜像的名称由两部分组成:repository:tag,其中的 tag 一般用来表示版本,默认的 tag 是 latest,表示最近的版本。

镜像的名称相当于在镜像上贴的一个标签,在一个镜像上可以贴多个标签:

在这里插入图片描述

# 镜像可以起另一个名称,名称格式: repository:tag
# 默认的 tag 是 latest
docker tag redis redis:5012

# 查看镜像
# 可以看到同一个镜像(ID相同)可以有多个名称
docker images | grep redis

在这里插入图片描述

2.2 删除镜像名:

镜像的名称可以被删除,只有唯一的一个名称时会删除镜像:

docker rmi redis:5012

在这里插入图片描述

测试完成删除后,需要重新将其导入进来;

2.3 镜像的导入导出

导出镜像并压缩到压缩文件:

# 把两个镜像 redis:latest 和 centos:8 导出,并压缩到 imgs.gz
docker save redis centos:8 | gzip > imgs.gz

导入镜像:

docker load -i imgs.gz

3.从镜像运行启动容器

3.1 从镜像运行启动容器

在这里插入图片描述

从一个镜像可以运行启动一个或多个容器。

所谓容器,我们可以理解为是一个虚拟的计算机,其中运行着操作系统,操作系统中运行着我们部署的应用。

从 tomcat 镜像启动容器:

docker run tomcat

在这里插入图片描述

容器启动后在容器中运行了 tomcat 应用。

这样启动会占用命令行,可以用 ctrl+c 退出 tomcat 应用。当容器中没有任何应用运行时,容器也会自动关闭退出。

3.2 查看启动的容器

也可以使用docker ps -a查看当前镜像启动的容器;

在这里插入图片描述

3.3 容器启动后运行的命令

容器启动后需要运行指定的命令来启动一个应用。

在镜像中指定的默认运行命令:

docker history tomcat

通过此命令来查看镜像的构建历史,其记录了此镜像是如何一步一步构建的过程;
a

在记录第一行我们可以看到,tomcat 镜像中设置的 CMD 指令指定了容器启动后默认运行的命令: catalina.sh run。

再来看看其他镜像中设置的默认命令:

docker history redis

---------------------------------------------------------------------------------
[root@localhost ~]# docker history redis
IMAGE          CREATED       CREATED BY                                      SIZE
bc8d70f9ef6c   3 weeks ago   /bin/sh -c #(nop)  CMD ["redis-server"]         0B
<missing>      3 weeks ago   /bin/sh -c #(nop)  EXPOSE 6379                  0B
<missing>      3 weeks ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B



docker history mariadb

---------------------------------------------------------------------------------
[root@localhost ~]# docker history mariadb
IMAGE          CREATED       CREATED BY                                      SIZE
eff629089685   13 days ago   /bin/sh -c #(nop)  CMD ["mysqld"]               0B
<missing>      13 days ago   /bin/sh -c #(nop)  EXPOSE 3306                  0B
<missing>      13 days ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B


docker history centos:8

----------------------------------------------------------------------------------
[root@localhost ~]# docker history centos:8
IMAGE          CREATED        CREATED BY                                      SIZE
300e315adb2f   6 months ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B

3.4 ENTRYPOINT 和 CMD

这两向设置都是用来设置容器中运行的命令,即启动命令:

只设置 CMD 来执行 ls -a -l:

CMD ["ls", "-a", "-l"]

只设置 CMD 是常见的用法。

用 ENTRYPOINT 和 CMD 两个一起设置来执行 ls -a -l:

ENTRYPOINT ["ls"]
CMD ["-a", "-l"]

两项一起设置时,会把两项设置的内容连接起来作为一个完整的命令。

3.5 启动容器时覆盖 ENTRYPOINT 和 CMD

覆盖 CMD:
以 tomcat 镜像为例,镜像中设置的默认命令是 catalina.sh run,可以任意指定命令覆盖这个默认命令,这里执行 ls -a -l 来测试:

docker run tomcat ls -a -l

覆盖 ENTRYPOINT:
--entrypoint:设置运行的命令,不许写在镜像名称 tomcat 的前面。注意,这里不能添加命令的参数;

镜像名称 tomcat 后面的内容会覆盖 CMD

docker run --entrypoint ls tomcat -a -l

3.6 -d 后台运行

后台运行启动 tomcat 容器:

docker run -d tomcat

a

查看后台运行的容器:

# 只查看运行的容器
docker ps 

# 查看所有容器,包括已停止的容器
docker ps -a

# 仅列出容器的 id
docker ps -q

# 仅列出运行容器的 id
docker ps -aq

查看容器的日志:

可以使用容器的名称或 id,使用id是允许至少写三位,能与其他id区分即可

docker logs 4d3

3.7 docker exec 进入容器,运行指定命令

绝大多数情况下一个容器中只运行一个应用。

容器中也允许运行启动多个应用,可以进入已经启动的容器, 在里面运行启动其他应用:
在这里插入图片描述

# 进入容器,运行指定的命令
docker exec -it 4d3 pwd
docker exec -it 4d3 touch f1.txt
docker exec -it 4d3 ls -l

# 启动 top 查看进程列表
# ctrl+c 可以退出top
docker exec -it 4d3 top

# 启动bash命令行
# exit 可以退出bash
# 启动bash命令后,此后执行的指令都是在容器中执行的
docker exec -it 4d3 bash

3.8 --name 和 --restart=always

--name:
每个启动的容器都可以指定一个名称,方便使用名称来操作容器。

--restart=always:
docker系统服务重启,或者操作系统重启,容器可以随系统自动启动。

# cat1容器可以随系统启动
docker run -d \
--name cat1 \
--restart=always \
tomcat

# cat2系统重启后默认是关闭状态,不会自动启动
docker run -d \
--name cat2 \
tomcat

# 查看容器
docker logs cat1

docker inspect cat1

# 重启docker系统服务
systemctl restart docker

# 查看容器,可以看到 cat1 自动重启了,而 cat2 处于关闭状态
docker ps -a

3.9 --rm 和 docker cp

--rm:
有时候我们会临时使用一个容器之后这个容器就不再使用,添加 --rm 参数可以在容器停止时自动删除容器

docker cp:
在容器和宿主机之间复制文件

下面来看一个实际的例子,这个例子中我们从 tomcat 的一个临时容器复制配置文件 server.xml 到宿主机,然后在 server.xml 中修改端口号,把 8080 改成 80。

# 启动一个临时容器
docker run -d \
--rm \
--name tmp \
tomcat

# 把 tomcat 的 server.xml 复制到宿主机的 /root/ 目录下
docker cp tmp:/usr/local/tomcat/conf/server.xml  /root/

# 停止临时容器,会自动删除
docker stop tmp

docker ps -a

# 修改 server.xml 中的8080端口,改成80
vim server.xml

# -v 把宿主机路径挂载到容器的一个路径
# 挂载的路径可以是文件,也可以是文件夹
# 这里把修改过的 server.xml 挂载到新启动的容器中
docker run -d \
--name cat2 \
-v /root/server.xml:/usr/local/tomcat/conf/server.xml \
tomcat

# 查看启动日志,确认使用 80 端口启动
docker logs cat2

在这里插入图片描述

在这里插入图片描述

超详细版树莓派5安装ROS2的SD卡镜像制作教程 手把手教你完成树莓派5安装ros2的完整流程,重点详解SD卡镜像的烧录与配置步骤,适配最新系统版本,让树莓派5安装ros2更稳定高效,轻松迈入机器人开发门槛。 阅读详情

相关推荐

matlab生成blocks、bumps和doppler标准测试信号

关键函数:wnoise使用方式X = wnoise(FUN,N) [X,XN] = wnoise(FUN,N,SQRT_SNR) [X,XN] = wnoise(FUN,N,SQRT_SNR,INIT)X = wnoise(FUN,N) 返回由 FUN给出的信号,长度为2^N,幅值范围[0,1].[X,XN] = wnoise(FUN,N,SQRT_SNR) ,返回了一个测试信号X,以及一个加噪

ZSZ_shsf的博客 6577

树莓派5安装ROS2时如何正确配置Ubuntu基础镜像

针对树莓派5安装ros2过程中的系统兼容问题,详解如何选择并配置合适的Ubuntu基础镜像,确保ROS2顺利运行。掌握关键步骤可大幅提升部署效率,避免常见错误。

weixin_42499004的博客 781

Ubuntu22.04安装ROS1

代表使用 2 线程进行编译,可以根据 CPU 适当调整。如果出现小乌龟窗口,说明安装成功 🎉!启动成功,则打开另一个终端,测试。需要解决一些兼容性问题,因为。由于 Ubuntu 22.04。过程,确保成功安装。

asafriend的博客 4639

QT新版本安装(5.15以上)——Qt 镜像网站——Qt5.15.2镜像安装

Index of /qt/ | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。Index of /qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror。由于QT版本升级到6.以上版本,在线安装可能找会存在找不到到相关想要的版本。解决办法:还采用在线安装的方法,添加版本的镜像路径(URL)的方法进行安装。(镜像路径又时候可能失效,需要重新打开网址找到相应的版本路径。换镜像网站,需要尝试。

weixin_61385844的博客 8540

【重启后nvidia-smi 命令出现错误】

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

qq_44769377的博客 5203

最新版谷歌浏览器Axure插件(免翻墙)

本文介绍了在Chrome浏览器无法直接打开Axure导出HTML文件的解决方法。由于国内网络限制无法访问Chrome商店,需手动下载安装AxureRP扩展插件(提供百度网盘下载链接)。安装步骤包括:1)启用开发者模式;2)拖拽CRX文件或加载解压文件夹;3)勾选"允许访问文件网址"。同时还提示若浏览器版本过低可能无法正常运行,并给出了浏览器升级方法。该教程详细说明了从插件安装到浏览器升级的完整解决方案。

OldCat先生 2953

Qwen2.5-7B镜像精选:5个最佳预装环境,开箱即用

5个精选镜像:从基础推理到高性能服务,覆盖各种使用场景开箱即用:免去复杂的环境配置,直接体验Qwen2.5-7B的强大能力硬件适配:针对不同显存配置提供了优化版本易于扩展:支持自定义参数和持久化存储性能优化:特别是vLLM版本大幅提升了推理效率现在你就可以选择一个最适合自己需求的镜像,几分钟内就能开始使用Qwen2.5-7B大模型了。实测这些镜像都非常稳定,社区也有大量使用案例可以参考。💡获取更多AI镜像想探索更多AI镜像和应用场景?访问CSDN星图镜像广场。

BlueTiger92的博客 993

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 232

使用docker原始镜像制作mvnbuild镜像 docker-mvn3.5.2-jdk8

docker-mvn3.5.2-jdk8.yml 源码下载指导 openjdk8 源码下载指导 https://www.cnblogs.com/haimishasha/p/9909055.html 下载地址 http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/ jdk/jre下载地址 https://www.oracle.com/java/technologies/javase-downloads.html 需要预先准备: jdk-8u261-linux-x64.tar.g

wuqingsssss的博客 805

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础:揭开网络世界的神秘面纱,计算机网络已深度融入现代生活,这篇文章对其基础内容展开全面阐述。开篇介绍计算机网络的定义,说明其由计算机设备、网络设备和传输介质构成。接着从地域范围和拓扑结构两个维度对计算机网络进行分类,并详细讲解 OSI 和 TCP/IP 参考模型,明晰各层功能与联系。随后阐述网络通信协议的定义及常见协议,如 TCP/IP、HTTP 等。最后聚焦网络安全,涵盖定义、重要性以及防火墙、加密技术等常用安全技术。文章旨在帮助读者构建计算机网络基础知识体系,理解其在生活和工作中的应用与价值

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

双像素传感器的AI计算摄影实战:单目深度估计与图像去模糊的融合创新

本文介绍了双像素传感器技术在计算机视觉中的应用,包括深度估计、图像去模糊和图像重建等任务。双像素传感器通过两个子单元捕捉视差信息,使摄像头能够分析场景的三维结构和运动轨迹。文章以图像去模糊为例,详细展示了从数据准备到模型训练的完整流程,包括构建自定义数据集、设计双像素特征提取模块、训练去模糊模型及推理测试。通过模拟双像素的"双视角"信息融合,该AI算法能有效恢复模糊图像的清晰细节。

know_F0727的博客 251

5个热门模型镜像推荐:Qwen2.5领衔,10块钱全试遍

新手入门:从Qwen2.5-VL开始,体验多模态交互的乐趣开发者必备:Qwen2.5-Coder+VSCode插件提升编码效率企业应用:vLLM版本满足高并发需求,Dify版快速搭建原型数据科学家:Finetune镜像用自有数据打造专属模型成本控制:所有镜像都支持按小时计费,10元预算足够体验核心功能实测这些镜像在CSDN星图平台部署成功率100%,遇到问题可以随时重置环境。现在就去试试吧,今天下班前你就能跑通第一个模型了!💡获取更多AI镜像想探索更多AI镜像和应用场景?访问。

SilverfoxFalcon42的博客 1038

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DaoCloud镜像同步项目实现Neo4j 5.26.2版本镜像同步

DaoCloud镜像同步项目实现Neo4j 5.26.2版本镜像同步 【免费下载链接】public-image-mirror 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。 项目地址: https://gitcode....

gitblog_07643的博客 419

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

5分钟体验PyTorch 2.5:镜像开箱即用,无需复杂配置

本文介绍了如何在星图GPU平台上自动化部署PyTorch 2.5镜像,实现深度学习开发环境的快速搭建。该镜像预装了完整的PyTorch 2.5环境和GPU加速组件,特别适用于模型训练、推理等场景,用户无需复杂配置即可开箱即用,大幅提升开发效率。

weixin_30533301的博客 147

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Qt5.15.2镜像

清华镜像源下载很快。

Hat_man_的博客 332

5.15.2清华镜像安装过程

然后输入 安装文件名.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt。2.在下载的文件目录中,shift+鼠标右键打开Powershell。附带下载链接(Index of /archive/qt)一.清华镜像下载Qt5.15.2软件解决下载缓慢问题。3.进入Qt Creater安装进程。1.在Qt官网下载Qt的安装文件。

qq343589960的博客 1174

Qt5.15.2清华镜像下载

2.2 然后输入 安装文件名.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt。2.1 cd命令进入安装文件当前文件夹。

Supmanzc的博客 2167

Wan2.2-T2V-5B本地化部署与HuggingFace镜像网站加速下载技巧

本文介绍轻量级文本到视频模型Wan2.2-T2V-5B的本地化部署方法,结合HuggingFace国内镜像站点实现高速下载。涵盖模型原理、推理代码、显存优化及典型应用场景,帮助开发者在消费级GPU上实现高效AI视频生成。

weixin_26854475的博客 898

PyTorch 2.5镜像资源占用多少?内存与磁盘实测数据

本文介绍了PyTorch 2.5镜像在星图GPU平台上的资源占用情况与自动化部署优势。通过实测数据,揭示了该镜像在空闲、推理及训练等不同场景下的内存与磁盘消耗,为开发者规划资源配置提供了清晰参考。基于星图GPU平台,用户可轻松自动化部署PyTorch 2.5环境,快速开展如图像分类模型训练等深度学习任务。

weixin_42476987的博客 878

Qwen2.5镜像推荐:3个最优配置免踩坑方案

基础对话选7B-Instruct:部署最简单,响应速度快,适合大多数文本任务多模态开发选Omni-7B:唯一支持音视频同步处理的配置,创意项目首选定制需求选7B-LoRA:内置完整微调工具链,适合需要模型适配的场景实测这三个镜像在CSDN算力平台都能一键部署,省去了自己配环境的麻烦。特别是Omni版本的多模态能力,做课程展示时效果很惊艳。现在就可以试试用预置镜像完成你的AI作业,至少能节省两天环境调试时间。💡获取更多AI镜像想探索更多AI镜像和应用场景?访问CSDN星图镜像广场。

GoldEagle19的博客 893

Qwen2.5-0.5B模型下载慢?国内镜像源加速教程

本文介绍了如何在星图GPU平台上自动化部署🤖 Qwen/Qwen2.5-0.5B-Instruct 极速对话机器人镜像,显著提升模型下载与部署效率。通过国内镜像源加速,用户可在本地CPU环境快速搭建轻量级对话系统,适用于智能客服、个人AI助手等低延迟文本交互场景。

weixin_36073714的博客 415

Qwen2.5-7B最新镜像下载:预装所有依赖库

省时省力:预装所有依赖的镜像让你免去环境配置的烦恼,节省大量时间开箱即用:下载镜像后几分钟内就能启动并运行Qwen2.5-7B模型稳定可靠:所有依赖库的版本都经过严格测试,避免兼容性问题灵活扩展:支持通过API调用,可以轻松集成到各种应用中现在你就可以下载这个预装所有依赖的Qwen2.5-7B镜像,立即体验这个强大语言模型的能力,而无需担心环境配置问题。💡获取更多AI镜像想探索更多AI镜像和应用场景?访问CSDN星图镜像广场。

EmeraldWolf23的博客 403

PyTorch 2.5镜像优势:免安装CUDA驱动的便捷方案

本文介绍了PyTorch 2.5-CUDA基础镜像如何提供开箱即用的深度学习GPU环境。用户可在星图GPU平台上实现该镜像的自动化部署,从而彻底告别复杂的CUDA驱动安装与版本匹配难题。该镜像特别适用于需要快速启动的AI模型开发与训练场景,例如计算机视觉或自然语言处理任务,让开发者能立即投入核心工作。

weixin_34413326的博客 869

5个开源大模型镜像推荐:Qwen2.5免配置一键部署教程

本文介绍了如何在星图GPU平台上自动化部署Qwen2.5-0.5B-Instruct镜像,实现快速搭建AI对话服务。该轻量级大语言模型指令遵循能力强、响应速度快,非常适合用于快速原型验证、教育演示或构建轻量级智能客服等应用场景。

weixin_34520664的博客 286

Windows Server 2012 R2 .net 3.5镜像SXS下载

Windows Server 2012 R2 .net 3.5镜像SXS下载 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供Windows Server 2012 R2版本的.NET 3.5镜像SXS文件下载。本资源能够解决在安装.NET 3.5时出现的提示缺少源文件问题,确保安装过程顺利进行。经过验证,此镜像文件绝对可用,为您的系统安装提供稳定支持。 去发现同类优...

gitblog_06712的博客 299
上一篇: 5.1 Docker环境准备
下一篇: 5.3 文件挂载及网络
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值