想象一下,您为网站构建了一个很酷的主页,并且它正与您在机器上的需求完全合作。您与其他人分享以获取他们的反馈,但它不会以相同的方式工作。信不信由你,这一直在软件开发世界中发生。 Docker是一种帮助您解决此问题的工具。
什么是Docker?
Docker是在容器中创建,部署和管理软件应用程序的强大工具。 A 容器是一个轻巧,独立和可执行的软件包,其中包含运行软件所需的所有内容,例如代码,库和依赖项。将其视为一个完整的捆绑包,所有内部工作都隐藏在外部世界中。 Docker可用于创建独立于主机环境的这些容器,从而在系统中提供相同的体验。
这是如何运作的?
由于图像,容器具有独立的文件系统。图像是容器的构建块,因此包含容器运行所需的所有内容 - 代码,文件系统,依赖关系。
Docker将所有图像包装在一个图像中,然后可以用来创建容器。
在本教程中,我们将简单的Python应用程序化。请注意,可以使用相同的过程来创建任何大小的容器。
项目结构
继续并在系统上创建一个新文件夹。我们称此docker-test
。创建一个称为pydock.py
的Python文件。将以下示例代码添加到Python文件或随时使用您自己的代码。
from faker import Faker
from tabulate import tabulate
fake = Faker()
# print 10 fake names and addresses
table = [['name','address']]
# generating the names and addresses
for _ in range(10):
name = fake.name()
address = fake.address()
table.append([name,address])
# print in tabular format
print(tabulate(table,headers='firstrow',tablefmt='fancy_grid'))
这是一个简单的应用程序,它以表格格式生成假名和地址。请注意,我们正在使用外部库-faker
和tabulate
用于同一。
现在在项目的根部创建一个.dockerignore
文件。使用它在创建图像时添加要忽略的文件。您的文件夹结构应该看起来像这样:
docker-test
-- pydock.py
-- .dockerignore
Docker设置
继续安装 docker桌面 for here的系统。当您使用时,还可以在dockerhub上创建一个帐户。
安装了Docker桌面后,您可以打开应用程序。这将在后台自动启动docker daemon
。
Dockerfile-魔术所在的地方
接下来,在项目根部创建一个名为Dockerfile
的文件。这定义了如何创建图像以及将用于创建图像的内容。现在,项目结构应该看起来像这样:
docker-test
-- pydock.py
-- .dockerignore
-- Dockerfile
编辑Dockerfile
的内容如下:
FROM python:3.8-slim-buster
WORKDIR /app
COPY . .
RUN pip install Faker tabulate
CMD [ "python3","pydock.py"]
让我们从上到下浏览此Dockerfile
的内容。
-
FROM
指令指定我们要创建的图像。我们可以从 dockerhub 中获取预构建的图像,包括全尺度操作系统。但是,在这种情况下,我们只需要构建一个Python图像,因此我们使用的是python:3.8-slim-buster
。您可以选择任何提到的python图像here -
WORKDIR
指令指定容器文件系统中的工作目录。将其视为您的图像将坐在容器中并运行的路径。在这种情况下,它是/app
。 -
COPY
指令使您可以将文件从计算机复制到图像。语法是COPY <source> <target>
,其中<source>
是您本地计算机上的文件路径,而<target>
是从工作目录开始的容器上的文件路径。 -
RUN
指令用于在Docker映像的构建过程中执行命令。在这里,我们使用它来安装我们的依赖项-Faker
和tabulate
。 -
CMD
指令用于指定从图像启动容器时要执行的默认命令。请注意,CMD
使用数组格式来定义命令,而RUN
使用简单的字符串格式
重要: docker图像是一组层。 Dockerfile
中的每个指令都会创建一层。这些层是在内部缓存的,以构建更快的图像。
构建Docker图像
完成Dockerfile
后,我们可以继续创建您的第一个Docker映像。项目根源的开放终端。您可以检查Docker是否正在使用
运行
docker --version
要构建图像,请运行以下内容:
docker build -t <username>/<image-name>:<tag> .
您可以随心所欲地调用图像,但通常使用以下惯例。
-
-t
选项可让您为图像创建标签。 -
<username>
是您的Docker Hub用户名。 -
<image-name>
是您要给图像的名称。 -
<tag>
就像图像的版本号。 -
.
是存在Dockerfile
的路径,在这里我们将其放在项目的根源 的根源
Docker开始从Dockerfile
中提到的说明创建图像层。完成后,您可以在Docker Desktop中查看您的构建图像。
运行容器
要在容器内运行图像,我们将使用以下内容:
docker run <username>/<image-name>:<tag>
这将从我们在上述过程中构建的图像中运行一个容器。运行上述命令后,您应该看到类似的输出。
恭喜!您已经成功地创建了第一个Docker容器。您可以在Docker桌面中检查容器,甚至将其发布给Docker Hub。您可以与他人共享此图像,他们可以简单地将其作为独立应用程序运行。没有安装大惊小怪,没有依赖性问题,什么也没有!他们甚至都不知道容器内部的内容,但是容器可根据需要工作!