[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;一旦宕机。就意味着整个集群的瘫痪&#…

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

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

Linux常用命令——emacs命令

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

服务器技术(三)--Nginx

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

【Nginx】rewrite简单使用

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

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

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

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

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

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

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

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

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

【图像处理】经营您的第一个U-Net以进行图像分割

一、说明 AI厨师们&#xff0c;今天您将学习如何准备计算机视觉中最重要的食谱之一&#xff1a;U-Net。本文将叙述&#xff1a;1语义与实例分割&#xff0c;2 图像分割中还使用了其他损失&#xff0c;例如Jaccard损失&#xff0c;焦点损失&#xff1b;3 如果2D图像分割对您来说…

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

【SpringBoot】SpringBoot的自动配置源码解析

文章目录 1. SpringBoot的自动配置概念2. SpringBoot自动配置的原理3. EnableAutoConfiguration4. 常用的Conditional注解 1. SpringBoot的自动配置概念 SpringBoot相对于SSM来说&#xff0c;主要的优点就是简化了配置&#xff0c;不再需要像SSM哪有写一堆的XML配置&#xff0…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042

文章目录 Django < 2.0.8 任意URL跳转漏洞&#xff08;CVE-2018-14574&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Trunc(kind) and Extract(lookup_name) SQL注入漏洞&#xff08;CVE-2022-34265&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Qu…

pyqt 实现计算器

1.由designer设计实现的计算器类 文件名为&#xff1a;untitled.py # -*- coding: utf-8 -*-# Form implementation generated from reading ui file untitled.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will b…

03-MySQL-基础篇-SQL之DDL语句

SQL之DDL语句 前言DDL数据库操作表操作查询操作数据类型案例修改删除 前言 本篇来学习下SQL中的DDL语句 DDL 全称Data Definition Language&#xff0c;数据定义语言&#xff0c;用来定义数据库对象(数据库&#xff0c;表&#xff0c;字段) 数据库操作 查询所有数据库 sh…

docker 发布镜像到阿里云容器镜像

1.登录阿里云 2.创建个人版实例&#xff0c;这里需要设置密码&#xff0c;一定要保存好 3.创建一个镜像仓库&#xff0c;个人实例最多创建3个 4.创建命名空间&#xff0c;个人实例最多300个 5.发布镜像到阿里云容器镜像 1、linux登录阿里云docker容器镜像 $ docker login --us…

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法&#xff0c;考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为&#xff0c;对考生的行为进行自动抓拍&#xff0c;并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…

Clion 配置Mingw64的 c++开发环境

1、Mingw64的安装与环境变量的配置 Mingw64文件下载 Mingw64下载地址&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ posix相比win32拥有C 11多线程特性&#xff0c;sjlj和seh对应异常处理特性&#xff0c;sjlj较为古老&#xff0c;所以选择seh 配置环境变…