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

news2024/10/7 4:35:52

前言:

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.coloradmin.cn/o/751606.html

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

相关文章

React中 Real DOM 和 Virtual DOM 的区别?优缺点?

一、是什么 Real DOM&#xff0c;真实 DOM&#xff0c;意思为文档对象模型&#xff0c;是一个结构化文本的抽象&#xff0c;在页面渲染出的每一个结点都是一个真实 DOM 结构&#xff0c;如下&#xff1a; Virtual Dom&#xff0c;本质上是以 JavaScript 对象形式存在的对 DOM …

mysql索引的简单使用

删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段 在 goods_name 列上加唯一性索引&#xff08;用alter table方式&#xff09; alter table add unique index uniqididx(goods_name);去查看索引 发现有goods_name的唯一索引 在 shop_price 列上加普通…

视频分类(Classification)和摘要(Captioning)总结

论文&#xff1a;Deep Learning for Video Classification and Captioning 视频分类是指将大量的视频数据按照一定的标准和规则进行分类和归类&#xff0c;以便于用户快速找到自己感兴趣的视频内容。视频分类可以基于不同的特征和属性进行&#xff0c;例如内容主题、风格、语言…

服务器数据恢复-HP服务器双循环校验raid5数据恢复案例

服务器数据恢复环境&#xff1a; 一台HP ProLiant DL系列某型号服务器&#xff0c;hp smart array控制器&#xff0c;挂载了一台国产磁盘阵列&#xff0c;磁盘阵列中是一组由十几块SCSI硬盘组建的RAID5&#xff0c;RAID中的冗余采用双循环的校验方式。 服务器操作系统为LINUX&a…

机器学习实战:Python基于LASSO回归进行正则化(十二)

文章目录 1 前言1.1 LASSO的介绍1.2 LASSO的应用 2. diabetes数据集实战演示2.1 导入函数2.2 导入数据2.3 拟合模型&#xff08;AIC/BIC&#xff09;2.4 AIC/BIC可视化2.5 拟合交叉验证模型及可视化 3. Hitters数据集实战演示3.1 导入函数3.2 导入数据3.3 数据预处理3.4 定义变…

Git全栈体系(二)

第四章 Git 分支操作 一、什么是分支 在版本控制过程中&#xff0c;同时推进多个任务&#xff0c;为每个任务&#xff0c;我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来&#xff0c;开发自己分支的时候&#xff0c;不会影响主…

STM32 DMA 传输类型调试记录

外设到内存 模式&#xff1a;单次、外设地址不自增&#xff0c;内存地址自增 hdma_usart1_rx.Instance DMA1_Channel5; // 使用通道 5 hdma_usart1_rx.Init.Direction DMA_PERIPH_TO_MEMORY; // 方向&#xff1a;外设 to 内存 hdma_usart1_rx.Init.PeriphInc DMA_PINC…

云开发校园微社区-二手交易兼职交友微信小程序

云开发校园微社区微信小程序开源源码&#xff0c;这是一款云开发校园微社区-二手交易_兼职_交友_项目微信小程序开源源码&#xff0c;可以给你提供快捷方便的校园生活&#xff0c;有很多有趣实用的板块和功能&#xff0c;如&#xff1a;闲置交易、表白交友、疑问互答、任务兼职…

css3其他效果

1&#xff09;媒体查询 不同分辨率下不同的样式&#xff0c;适应不同的屏幕 最大宽度&#xff0c;最小宽度 2&#xff09;颜色渐变 渐变之后是一张图片 background-image 默认效果是从上到下&#xff08;to bottom&#xff09;的渐变 linear-gradient是线性渐变 要是想改变方…

udp如何传输大数据附udp高速传输技术解决方案

当遇到UDP传输大数据时&#xff0c;首先需要考虑使用专业的大数据传输软件或工具来满足UDP传输大数据的需求。其次&#xff0c;需要对UDP大数据传输的各个方面进行分析和优化&#xff0c;以确保传输的快速、安全、稳定和高效。 什么是UDP&#xff1f; UDP&#xff08;用户数据…

算法和算法评价

1 算法的基本概念 1.1 算法是什么&#xff1f; 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每条序列指令表示一个或多个操作。 举例&#xff1a;程序 数据结构&#xff08;要处理的信息&#xff09; 算法&#xff08;处理信息的步骤…

VMware vCenter Server 8.0安装并添加ESXi 7.0主机(含ESXi 6.7版本升级至7.0版本)

目录 一、VMware vSphere虚拟化方案名词梳理 1、VMware Workstation&#xff1a;虚拟化工具 2、VMware vSphere&#xff1a;虚拟化方案 2.1 ESXi&#xff1a;裸金属架构的虚拟化技术 2.2 vCenter Server&#xff1a;批量连接 ESXi 的管理工具 2.3 vSphere Client&#xf…

Linux--验证内存地址空间排布

验证&#xff1a; #include<stdio.h> #include<stdlib.h>int g_val1 10; int g_val2 20;int g_val3; int g_val4;int main(int argc, char* argv[], char* env[]) {//任务:验证进程地址空间//代码区printf("code address:%p\n", main);//只读常量区co…

录好的视频怎么把声音提取出来?这四种方法轻松提取

当我们录制好一段视频后&#xff0c;如果需要对视频中的声音进行编辑&#xff0c;或者是要对视频中的语音内容进行翻译&#xff0c;这时我们将需要提取视频中的声音&#xff0c;可以使得对语音内容进行编辑或翻译更加方便&#xff0c;因为不需要在视频中不断寻找对应的片段。那…

Python 自学 day02 循环语法 for ,函数定义和使用,容器的定义和使用,列表的函数和使用

1.for 循环基础语法 2.获取数字序列的函数 range 2.1 range 函数用法一 ; num range(5) #获取一个 0 到 4 的数字序列 &#xff08;注意不包含参数本身&#xff09; 2.2 range 函数用法二 &#xff1a; num1 range(2,5) #获取 一个 2 数到 4 的数字序列&#…

如何利用智云通CRM快速获取客户并实现销售

开发新市场是企业扩展业务和增加销售的重要策略之一。然而&#xff0c;在面对新的市场和客户时&#xff0c;如何高效地获取客户并实现销售一直是企业面临的挑战。智云通CRM作为一款领先的客户关系管理软件&#xff0c;则为企业提供了全方位的解决方案&#xff0c;帮助企业在开拓…

如何将jar 包下载到自定义maven仓库

下载命令 mvn install:install-file -Dfileartifactid-version.jar -DgroupIdgroupid -DartifactIdartifactid -Dversionversion -Dpackagingjar -DlocalRepositoryPath. -DcreateChecksumtrue参数解释 在上述命令中&#xff0c;需要替换以下参数&#xff1a; artifactid-vers…

阿里云无影云电脑具体价格表(1元入口)

阿里云无影云电脑配置费用&#xff0c;4核8G企业办公型云电脑可以免费使用3个月&#xff0c;无影云电脑地域不同费用不同&#xff0c;无影云电脑是由云桌面配置、云盘、互联网访问带宽、AD Connector、桌面组共用桌面session等费用组成&#xff0c;阿里云百科分享阿里云无影云电…

如何使用python这样的简单程序语言,在自己的电脑上搭建一个共享文件服务器.

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有…

数据库应用:MySQL索引

目录 一、理论 1.MySQL三层逻辑架构 2.索引结构 3.MyISAM与InnoDB对比 4.sql优化 5.MySQL 索引 6.MySQL索引原理 二、实验 1.创建索引 三、总结 一、理论 1.MySQL三层逻辑架构 MySQL的存储引擎架构将查询处理与数据的存储/提取相分离。 MySQL的逻辑架构图如下&…