[Docker] Docker镜像管理和操作实践(二) 文末送书

前言:

Docker镜像是容器化应用程序的打包和分发单元,包含了应用程序及其所有依赖项,实现了应用程序的可移植性和一致性。

在这里插入图片描述

文章目录

  • 使用Dockerfile创建自定义镜像
  • 实践练手
    • 1. 创建基于ubuntu的自定义镜像,并安装nginx
    • 2. 配置Redis容器
    • 3. 配置MySQL
    • 4. 配置CentOS镜像
    • 最佳实践
  • 送书活动🧁
    • 1.同构:编程中的数学
    • 2. Python深度学习“四大名著”之一全新PyTorch版

使用Dockerfile创建自定义镜像

Docker是一种流行的容器化平台,它可以帮助开发人员将应用程序及其依赖项打包到一个独立的容器中。这样的容器可以在不同的环境中轻松部署和运行,确保应用程序的可移植性和一致性。

首先,创建一个空的文件夹,并在其中创建一个名为Dockerfile的文件。

打开Dockerfile,并添加以下内容作为基本的模板:

# 使用基础镜像作为起点
FROM base_image# 添加/复制文件到镜像中
COPY source destination# 执行命令来安装依赖项
RUN command

在上述中,将base_image替换为您选择的基础镜像,source和destination替换为要复制的文件或目录的路径,以及command替换为要执行的命令。

接下来,根据自己的需求添加更多的指令。使用RUN指令来安装软件包、更新系统等。使用ENV指令来设置环境变量,使用EXPOSE指令来声明容器要监听的端口号等。

完成Dockerfile后,可以使用以下命令来构建自定义镜像:

docker build -t image_name .

其中,-t选项用于指定镜像的名称和标签,.表示Dockerfile所在的当前目录。

构建完成后,使用以下命令来查看已构建的镜像列表:

docker images

理解镜像层和容器的关系
Docker镜像由一系列只读的镜像层组成,每个镜像层都包含了一个或多个文件系统的更改。这些更改可以是添加、删除或修改文件。镜像层是层叠的,每个层都构建在前一个层之上。这种层级结构使得镜像的复用和共享变得更加高效。

当使用镜像创建容器时,Docker会在镜像层之上创建一个可写的容器层。容器层允许在运行时对文件系统进行更改,例如添加、修改或删除文件。这些更改只会影响到容器层,而不会改变原始的镜像层。这种分层结构可以实现容器的轻量级和快速启动。

实践练手

可以在Linux系统中使用Docker轻松地拉取、配置和运行Redis、MySQL和CentOS镜像。Docker提供了一个方便和可移植的方式来部署和运行各种服务和应用程序,确保了应用程序的可移植性和一致性。

1. 创建基于ubuntu的自定义镜像,并安装nginx

# 使用基础镜像作为起点
FROM ubuntu:latest# 更新apt源并安装Nginx
RUN apt-get update && apt-get install -y nginx# 暴露80端口
EXPOSE 80# 启动Nginx服务
CMD ["nginx", "-g", "daemon off;"]

在包含Dockerfile的目录中,使用以下命令构建镜像

docker build -t my-nginx .

这将根据Dockerfile构建一个名为my-nginx的镜像。

构建完成后,可以使用以下命令运行镜像:

docker run -d -p 80:80 my-nginx

在后台运行一个基于my-nginx镜像的容器,并将宿主机的80端口映射到容器的80端口。

在浏览器中访问http://localhost来查看Nginx欢迎页面。

2. 配置Redis容器

确保已经在Linux系统上安装了Docker。可以使用以下命令来检查Docker是否已经安装:

docker version

从Docker Hub上拉取Redis镜像

docker pull redis

使用以下命令来运行Redis容器:
将在后台运行一个名为my-redis的Redis容器,并将宿主机的6379端口映射到容器的6379端口。

docker run -d --name my-redis -p 6379:6379 redis

使用Redis客户端连接到Redis容器。例如,使用以下命令连接到Redis容器:

redis-cli -h localhost -p 6379

3. 配置MySQL

使用以下命令从Docker Hub上拉取MySQL镜像:

docker pull mysql

使用以下命令来运行MySQL容器:

docker run -d --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql

将在后台运行一个名为my-mysql的MySQL容器,并将宿主机的3306端口映射到容器的3306端口。通过-e选项指定了MySQL的root用户密码为password。
使用MySQL客户端连接到MySQL容器。例如,使用以下命令连接到MySQL容器:

mysql -h localhost -P 3306 -u root -p

输入之前设置的密码即可成功连接到MySQL容器。

4. 配置CentOS镜像

使用以下命令从Docker Hub上拉取CentOS镜像:

docker pull centos

使用以下命令来运行CentOS容器:

docker run -it --name my-centos centos

将在交互模式下运行一个名为my-centos的CentOS容器。
可以在CentOS容器中执行各种操作和命令。例如,安装软件包、修改配置文件等。

# 在容器中安装软件包
yum install <package-name># 修改配置文件
vi <path-to-file>

在完成所需的操作后,您可以使用以下命令退出并停止CentOS容器:

exit
docker stop my-centos

最佳实践

  1. 使用最小化的基础镜像,以减小镜像的大小和安全风险。
  2. 合并多个RUN指令为一个,以减少镜像层数。
  3. 使用.dockerignore文件来排除不必要的文件和目录。
  4. 避免在RUN指令中使用无关的缓存,以减小镜像的大小。
  5. 定期更新基础镜像和软件包,以保持镜像的安全性和稳定性。

送书活动🧁

1.同构:编程中的数学

近年来随着人工智能、大规模分布式计算、多核CPU和异构计算等的发展,计算机中的各种编程技术在编程语言、软件架构、编译器、硬件体系结构、集成电路设计等方面都有着剧烈的变化。编程语言方面,越来越多的主流语言引入函数式编程的概念。

在这里插入图片描述

本书从数字、递归、对称、范畴、融合、无穷、悖论七个方面介绍了计算机程序的数学基础和原理,并以“同构”概念为线索揭示出编程本质上是和数学同构的。

感兴趣的小伙伴可以自行阅读购买
当当网购买链接:同构:编程中的数学

2. Python深度学习“四大名著”之一全新PyTorch版

近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。

《Python机器学习:基于PyTorch和Scikit-Learn》这本书的定位是把机器学习理论和工程实践结合起来,从而降低读者的阅读门槛。从数据驱动方法的基础知识到最新的深度学习框架,本书每一章都提供了机器学习代码示例,用于解决实际应用中的机器学习问题。

在这里插入图片描述

这是一本全面介绍在PyTorch环境下学习机器学习和深度学习的综合指南,可以作为初学者的入门教程,也可以作为读者开发机器学习项目时的参考书。

深入介绍了机器学习方法的基础知识,不仅提供了构建机器学习模型的说明,而且提供了构建机器学习模型和解决实际问题的基本准则。无论是机器学习入门新手,还是计划跟踪机器学习进展的研发人员,都可以将本书作为使用Python进行机器学习的不二之选。

感兴趣的小伙伴可以自行阅读购买
当当网购买链接:Python深度学习“四大名著”之一全新PyTorch版

🍬🍬本次送书两本,评论区抽两位小伙伴送书🍬🍬
活动时间:截止到2023-07-18 9:00:00
中奖的小伙伴,从以上2本书籍中任选一本
抽奖方式:利用程序进行抽奖。
参与方式:关注博主、点赞、收藏,评论区评论 “人生苦短,我用AI”(单账号最多评论三次)

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

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

相关文章

MySQL数据库高级查询语句

MySQL数据库高级查询语句 一、语句SELECT ----显示表格中一个或数个字段的所有数据记录DISTINCT ----不显示重复的数据记录WHERE ----有条件查询AND OR ----且 或IN ----显示已知的值的数据记录BETWEEN ----显示两个值范围内的数据记录通配符 ----通常通配符都是跟 LIKE 一起使…

【云原生】二进制k8s集群(下)部署高可用master节点

本次部署说明 在上一篇文章中&#xff0c;就已经完成了二进制k8s集群部署的搭建&#xff0c;但是单机master并不适用于企业的实际运用&#xff08;因为单机master中&#xff0c;仅仅只有一台master作为节点服务器的调度指挥&#xff0c;一旦宕机。就意味着整个集群的瘫痪&#…

input.unsqueeze(0)的作用

input.unsqueeze(0) 是 PyTorch 张量&#xff08;Tensor&#xff09;的方法之一&#xff0c;用于增加张量的维度。具体来说&#xff0c;它会在索引为 0 的位置上插入一个维度。 假设 input 是一个形状为 (n,) 的一维张量&#xff0c;其中 n 是任意长度。调用 unsqueeze(0) 后&…

【Web3】 Web3JS Pay Api

Web3Network.eth.sendSignedTransaction(serializedTx) 参数&#xff1a; from- String|Number&#xff1a;发送帐户的地址。如果未指定&#xff0c;则使用web3.eth.defaultAccount属性。或web3.eth.accounts.wallet中本地的地址。 to- String:(可选&#xff09;消息的目标地址…

宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法

最近看见腾讯云有一个AI绘画还挺有意思&#xff0c;想搞来写个接口玩 但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了&#xff01; 然后就可以运行这个命令了 出现这种情况 还需要删除所有…

Linux常用命令——emacs命令

在线Linux命令查询工具 emacs 功能强大的全屏文本编辑器 补充说明 emacs命令是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器&#xff0c;它支持多种编程语言&#xff0c;具有很多优良的特性。有众多的系统管理员和软件开发者使用emacs。 语法 e…

ubuntu20.04上linux内核开发环境搭建(qemu+gdb+vscode)

qemugdbvscode环境搭建 1. 环境准备1.1 安装基础软件1.2 安装开发软件1.3 安装qemu 2. 制作rootfs2.1 buildroot制作rootfs2.2 busybox制作rootfs 3. kernel编译及运行3.1 编译内核3.2 启动内核3.3 qemu参数说明 4. vscode 图形化调试环境配置4.1 vscode配置4.2 qemu配置 1. 环…

服务器技术(三)--Nginx

Nginx介绍 Nginx是什么、适用场景 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发&#xff0c;性能是其最重要的考量&#xf…

【Nginx】rewrite简单使用

前言 没有对正式的rewrite进行了解&#xff0c;为了能快速了解它是干嘛怎么用&#xff0c;找了一些有例子的博客进行简单学习了一下&#xff1b;由于每次看的间隔有点大&#xff0c;老忘记&#xff0c;这回专门写个超级快速理解的例子。 PS&#xff1a;下面的解释可能会不太对…

SMALE周报_20230714

目录标题 1. 上周回顾2. 本周计划3. 完成情况4. 存在的主要问题5. 下一步工作 1. 上周回顾 总结不确定性在神经网络中的运用。跳转链接 2. 本周计划 通过阅读论文《Semi-Supervised Deep Regression with Uncertainty Consistency and Variational Model Ensembling》&#…

LAXCUS分布式操作系统存在的意义和价值

总有一些新用户不能理解LAXCUS分布式操作系统&#xff0c;以及它存在的意义和价值&#xff0c;我这样说吧。 下图是一个图形桌面&#xff08;LAXCUS的图形桌面&#xff0c;不是Windows、也不是Macintosh&#xff09;&#xff0c;在它后面&#xff0c;连着一个计算机集群&#…

Scala集合 - Map;扩展元组类型

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 目录 一、不可变Map集合 1. 集合创建   2. 集合遍历   3. 获取Map中的value 二、可变Map集合 1. 创建可变Map集合   2. 添加元素   3. 删除元素   4. 修改Map中的元素 三、元组 1. 元组的创…

自然语言处理-文本表示: Embedding技术

目录 I. 引言 A. 文本表示介绍 B. 引入Embedding技术的重要性和应用领域 II. 传统文本表示方法 A. One-Hot编码 B. 词袋模型 C. TF-IDF III. 什么是文本表示-Embedding A. 定义和概念 B. Embedding的目标和作用 IV. 常见Embedding技术 A. Word2Vec 1. CBOW模型 2…

数据库技术与应用——目录篇

数据库技术与应用目录 文章目录 第1章 数据库基础知识数据库技术的概念数据管理的发展数据库的体系结构数据库管理系统常用的数据库管理系统介绍 第2章 信息得三种世界与数据模型信息的三种世界及其描述数据模型 第3章 关系模型关系模型的由来关系数据库的结构关系代数关系演算…

Flutter Notification (通知)

通知可以用来监听事件&#xff0c;用来刷新页面&#xff0c;先看通知的源码&#xff1a; class NotificationListener<T extends Notification> extends ProxyWidget {/// Creates a widget that listens for notifications.const NotificationListener({super.key,requ…

【代码】Python实现Excel数据合并

文章目录 概要整体架构流程代码小结 概要 通过遍历指定目录下的多个Excel文件&#xff0c;将它们的数据合并到一个新的Excel文件中&#xff0c;实现Excel数据合并的功能。 整体架构流程 代码的主要流程如下&#xff1a; 导入所需的库&#xff1a;os用于文件路径操作&#x…

pix2pix-gan医疗图像分割迁移

pix2pix-gan做医学图像合成的时候&#xff0c;如果把nii数据转成png格式会损失很多信息&#xff0c;以为png格式图像的灰度值有256阶&#xff0c;因此直接使用nii的医学图像做输入会更好一点。 但是Pythorch中的Dataloader是不能直接读取nii图像的&#xff0c;因此加一个Creat…

Linux命令----modprobe命令详解

【原文链接】Linux命令----modprobe命令详解 一、modprobe命令的作用 加载内核模块&#xff1a; 使用modprobe命令可以加载指定的内核模块到运行中的内核中。加载内核模块可以在运行时添加新的功能、驱动程序或修改内核行为。 解决模块依赖关系&#xff1a; modprobe命令可以…

excel的导出

excel的导出是开发常见的功能&#xff0c;但是excel得到处都是谁导出呢&#xff1f; 一般情况excel都是由后端导出生成blob格式返给前端&#xff0c;前端进行下载&#xff0c;当然前端也可以自己利用数据进行excel导出&#xff0c;这篇文章将介绍前端导出和后端导出的一些插件…

基于OpenCV的人脸对齐步骤详解及源码实现

目录 1. 前言2. 人脸对齐基本原理与步骤3. 人脸对齐代码实现 1. 前言 在做人脸识别的时候&#xff0c;前期的数据处理过程通常会遇到一个问题&#xff0c;需要将各种人脸从不同尺寸的图像中截取出来&#xff0c;再进行人脸对齐操作&#xff1a;即将人脸截取出来并将倾斜的人脸…