前言:
Docker镜像是容器化应用程序的打包和分发单元,包含了应用程序及其所有依赖项,实现了应用程序的可移植性和一致性。
文章目录
使用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
最佳实践
- 使用最小化的基础镜像,以减小镜像的大小和安全风险。
- 合并多个RUN指令为一个,以减少镜像层数。
- 使用.dockerignore文件来排除不必要的文件和目录。
- 避免在RUN指令中使用无关的缓存,以减小镜像的大小。
- 定期更新基础镜像和软件包,以保持镜像的安全性和稳定性。
送书活动🧁
1.同构:编程中的数学
近年来随着人工智能、大规模分布式计算、多核CPU和异构计算等的发展,计算机中的各种编程技术在编程语言、软件架构、编译器、硬件体系结构、集成电路设计等方面都有着剧烈的变化。编程语言方面,越来越多的主流语言引入函数式编程的概念。
**本书从
数字、递归、对称、范畴、融合、无穷、悖论七个方面
介绍了计算机程序的数学基础和原理,并以“同构”概念为线索揭示出编程本质上是和数学同构的。**
感兴趣的小伙伴可以自行阅读购买
当当网购买链接:同构:编程中的数学
2. Python深度学习“四大名著”之一全新PyTorch版
近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。
《Python机器学习:基于PyTorch和Scikit-Learn》这本书的定位是把机器学习理论和工程实践结合起来,从而降低读者的阅读门槛。从数据驱动方法的基础知识到最新的深度学习框架,本书每一章都提供了机器学习代码示例,用于解决实际应用中的机器学习问题。
这是一本全面介绍在PyTorch环境下学习机器学习和深度学习的综合指南,可以作为初学者的入门教程,也可以作为读者开发机器学习项目时的参考书。
**
深入介绍了机器学习方法的基础知识,不仅提供了构建机器学习模型的说明,而且提供了构建机器学习模型和解决实际问题的基本准则
。无论是机器学习入门新手,还是计划跟踪机器学习进展的研发人员,都可以将本书作为使用Python进行机器学习的不二之选。**
感兴趣的小伙伴可以自行阅读购买
当当网购买链接:Python深度学习“四大名著”之一全新PyTorch版
🍬🍬本次送书两本,评论区抽两位小伙伴送书🍬🍬
活动时间:截止到2023-07-18 9:00:00
中奖的小伙伴,从以上2本书籍中任选一本
抽奖方式:利用程序进行抽奖。
**参与方式:关注博主、点赞、收藏,评论区评论 “人生苦短,我用AI”
**(单账号最多评论三次)
版权归原作者 万物皆可der 所有, 如有侵权,请联系我们删除。