什么是 Dockerfile

Docker工具是大多数全球公司配置管理工具的重要组成部分。Docker 工具在 dockerfile 的帮助下运行应用程序,具有高度的抽象性和安全性。因此,许多公司正在广泛采用该工具来实现高网络可用性,服务连续性和具有高可扩展性的服务提供。

Docker如此受欢迎的原因是Docker镜像,Docker容器和Dockerfile。但是,Docker 映像只能在 Dockerfile 的帮助下创建。展望未来,让我们详细了解 Docker 和 dockerfile。

什么是 Docker?

Docker 是一种配置管理工具,用于在轻量级容器中自动部署软件。这些容器可帮助应用程序在不同环境中高效工作。

Docker 的特性:

  • 简单快速的配置
  • 应用程序隔离
  • 安全管理
  • 高生产率
  • 高可扩展性
  • 独立于基础架构

Docker容器是一个软件包,它具有运行应用程序所需的所有依赖项。

注意:Docker 映像是用于创建容器的说明模板

什么是 Dockerfile?

在我们讨论什么是 Dockerfile 之前,了解什么是 Docker 映像非常重要。

Docker 映像:

Docker图像是一个只读文件,其中包含一堆指令。执行这些指令时,它会创建一个 Docker 容器。

Dockerfile:

Dockerfile 是一个简单的文本文件,其中包含构建 Docker 映像的说明。

下面提到的是 Dockerfile 的语法:

语法

# comments

command argument argument1...

# Print "Get Certified. Get Ahead"

Run echo "Get Certified. Get Ahead"

现在,让我们看一下如何使用 dockerfile 构建 Docker 映像。

用于创建 Docker 文件的 Docker 命令列表

在我们创建第一个 Dockerfile 之前,了解构成文件的内容非常重要。

Dockerfile 由特定命令组成,这些命令指导您如何构建特定的 Docker 映像。

您可以在 dockerfile 中使用的特定命令包括:

FROM,PULL,RUN和 CMD

  • FROM - 从 ubuntu 创建一个图层:18.04
  • PULL - 从 Docker 存储库添加文件
  • RUN - 构建容器
  • CMD - 指定要在容器内运行的命令

下面提到的是具有重要命令的 dockerfile 示例

FROM ubuntu:18.04

PULL. /file

RUN make /file

CMD python /file/file.py 

查看 Dockerfile 在 docker 映像中的外观的图表表示形式:

接下来,让我们来看看创建 Docker 文件时使用的一些最常见的 Docker 命令。除了语法之外,我们还通过示例解释了命令,因此您可以立即开始试验它们。

  • ENTRYPOINT 允许指定命令以及参数

语法

ENTRYPOINT application "arg,arg1".

ENTRYPOINT echo "Hello,$name".

  • ADD 命令有助于将数据复制到 Docker 映像

语法

ADD /[source]/[destination]

ADD /root_folder/test_folder

  • ENV 为可在容器内访问的变量提供默认值

语法

ENV key value

ENV value_1

  • 维护者声明图像的作者字段

语法

MAINTAINER [name]

MAINTAINER author_name

如何使用 Dockerfile 构建 Docker 映像和 Docker 容器?

首先,您应该创建一个目录,以存储您构建的所有 Docker 映像。

  • 现在,我们将使用以下命令创建一个名为"simplidocker"的目录:

mkdir simplidocker

  • 将 Docker 映像移动到该目录中,并在其中创建一个新的空文件(Dockerfile):

cd simplidocker 

touch Dockerfile

  • 使用编辑器打开文件。在此示例中,我们使用 vi 打开文件:

vi Dockerfile

  • 然后,添加以下内容:

FROM ubuntu

MAINTAINER simpli

RUN apt-get update

CMD ["echo","Welcome to Simplilearn"]

  • 5.保存并退出文件。

使用 Dockerfile 构建 Docker 映像

让我们首先声明将存储 dockerfile 简化器的路径

docker build [OPTIONS] PATH | URL | -

现在,让我们使用 Dockerfile 构建一个基本映像:

docker build [location of your dockerfile]

现在,通过添加 -t 标志,可以使用名称标记新映像:

# docker build  -t simpli_image:latest .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu
 ---> ba6acccedd29
Step 2/4 : MAINTAINER simpli
 ---> Running in fa20a23e5d98
Removing intermediate container fa20a23e5d98
 ---> 0fc9243f895b
Step 3/4 : RUN apt-get update
 ---> Running in 46d60d189a84
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [821 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
Get:7 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [726 kB]
Get:8 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [30.1 kB]
Get:9 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [1326 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:12 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [784 kB]
Get:14 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [33.6 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1099 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1741 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [50.0 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [21.7 kB]
Fetched 20.1 MB in 1min 30s (223 kB/s)
Reading package lists...
Removing intermediate container 46d60d189a84
 ---> 248c552132af
Step 4/4 : CMD ["echo","Welcome to Simplilearn"]
 ---> Running in 9f5fdff5bce1
Removing intermediate container 9f5fdff5bce1
 ---> 8d2bc85be97d
Successfully built 8d2bc85be97d
Successfully tagged simpli_image:latest
[root@docker simplidocker]#

创建 Docker 映像后,可以通过执行以下命令进行验证:

docker images

输出应显示存储库中可用的simpli_image。

创建新容器

现在,从我们在上一步中创建的 Docker 映像创建一个 Docker 容器。

让我们将容器命名为"simplilearn",并使用以下命令创建它:

docker run --name simplilearn simpli_image

消息"Welcome to Simplilearn"应出现在命令行中。

恭喜,你刚刚使用 Dockerfile 创建了一个 Docker 映像和一个 Docker 容器。

结论

有了这个,我们就来到了文章的结尾,什么是dockerfile。在本文中,我们讨论了什么是 docker,什么是 dockerfile、dockerfile 的语法、使用 dockerfile 创建 docker 镜像的重要命令,以及如何使用 dockerfile 构建 docker 镜像。

原文地址:https://blog.csdn.net/allway2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
构建镜像最具挑战性的一点是使镜像大小尽可能的小。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建。您可以选择
本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: '3' services: nginx: build: /root/docker_demo/nginx/ ports: - &q
环境 docker-machine主机:192.168.1.9 docker主机:192.168.1.10 步骤: 安装docker-machine 创建ssh密钥对,实现两主机无密登录 创建docker主机,命名host1 变更docker环境变量 运行容器查看两端是否同步 镜像容器同步测试成功
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
https://blog.csdn.net/wanglei_storage/article/details/77508620 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is grea
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 删除异常停止的docker容器 docker rmi -f `docker images | grep '<none>' | awk &#3
什么是Docker Compose 在微服务盛行的今天,我们通常是这么定义Compose的:对容器的统一启动和关闭的编排工具。 但是我以前还是有个疑惑,谁会用Compose在一台服务器上部署多个服务呢?干脆直接用单体服务就行了!直到我遇到了以下的一个需求,让我明白了在一台服务器上不得不用多个服务的时
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常。通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程。 VS中的附加进程非常强大,目前提供了9种常用的附加方式。 在当前.Net Core支持跨平台的大背景下,其中Linux环境和
https://www.cnblogs.com/bigberg/p/8867326.html 一、简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行
.Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" /&g
原文 https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 co