Docker和容器简介

目录

Docker究竟是什么?

Docker对作为开发人员的我的重要性是什么?

那么我们究竟如何使用Docker?

容器和Docker之间有什么区别?

容器的优点

容器和虚拟机

Docker引擎

安装Docker

演示:将ASP.NET应用程序作为容器运行

演示:安装MongoDB

传统的软件安装方式

将软件作为容器运行

屏幕背后会发生什么?

Docker命令

如何将镜像上传到Docker Hub?


Docker究竟是什么?

每当我们必须安装软件时,我们必须处理很多事情。有许多不同版本的软件可用于不同的操作系统及其不同版本。您必须完成文档并根据需要选择最适合的文档,然后运行执行文件。即便在此之后,您可能需要先完成其他一些步骤才能使用该软件。Docker运行包含软件的容器以及软件运行所需的其他内容。所以,这意味着你只需要使用包含您要安装的镜像的名称的''docker run'命令,瞧,您的软件使用自己的资源在自己的容器中运行。您不必担心哪个版本的软件适合您的操作系统等。我将通过MongoDB安装示例来演示。

Docker对作为开发人员的我的重要性是什么?

好吧,开发人员可以简单地编写代码,并创建一个镜像。该镜像将包含运行应用程序所需的所有工具。此镜像只需部署在没有安装任何软件的生产机器上,应用程序将与开发机器完全一样运行。

那么我们究竟如何使用Docker

一旦我们在我们的系统上安装了docker,我们就会转到Docker Hub或其他一些Registry。搜索要安装的软件。然后,您可以运行PowerShell命令docker run imageName并且该软件已准备好供我们使用。

容器和Docker之间有什么区别?

是的,这两个术语可以互换使用。但它们意味着不同的东西。容器是自包含的进程,包括运行的软件及其依赖项等。容器已经存在于Linux中很长一段时间了,但它们并没有太多使用。根据Docker的官方网站 --Docker'开发人员和系统管理员用平台开发,部署和运行应用程序的平台'。总而言之,dockers帮助我们维护容器,容器是运行应用程序的进程。

容器的优点

如上所述,作为容器运行简化了运行软件和应用程序的过程。假设您有一个ASP.NET应用程序。开发人员可以创建工作应用程序的镜像。此镜像将包含应用程序,ASP.NET Framework等。现在,此镜像可以作为容器部署在prod机器上,而不需要安装其他任何东西。应用程序运行所需的任何内容都将出现在容器中。容器将在所有系统上运行相同的容器。因此,您将不再有像应用程序在dev上运行但在Prod上失败的问题。

容器和虚拟机

容器和虚拟机看起来可能相同,但它们完全不同。容器将仅包含应用程序所需的工具,并将与其他容器共享主机操作系统内核。但另一方面,虚拟机将拥有自己完全独立的操作系统。由于容器没有自己的完整操作系统,因此它们比虚拟机更轻量。

Docker引擎

docker官方网站用下图解释了Docker引擎:

docker引擎由客户端和服务器组成。我们的用户使用docker CLI(也是客户端)与服务器进行交互。客户端通过docker Rest API与服务器交互。服务器或docker守护程序负责运行容器。当用户从docker CLI输入命令时,例如 - ' docker run imagename' 命令,docker守护进程接收请求。守护程序将在本地搜索镜像,如果找到,它将作为容器运行。将镜像视为执行文件。如果在本地找不到镜像,守护程序将在Registry中搜索它,然后将其作为容器运行。

安装Docker

现在,让我们开始实际探索docker。您需要具有至少4 GB RAMWindows 10 专业版或企业版本才能安装Docker。由于我没有Windows 10 专业版,我在Azure中创建了一个虚拟机。以下是步骤:

转到Azure门户网站并单击虚拟机。

选择Windows 10专业机器。并非所有虚拟机都支持嵌套虚拟化。所以,我选择了一个大小为D2s_v3的虚拟机。选择支持嵌套虚拟化大小的虚拟机对于运行Docker非常重要。

另外,请确保在入站和出站端口规则中,允许所有连接通过RDP; 否则,您可能无法通过RDP连接。

如果您尝试从办公室访问Azure,则可能会遇到问题。您可能需要与系统管理员联系以打开这些端口。一旦我们的虚拟机启动并运行,我们需要安装Docker。转到这里来安装Docker  for  Windows

安装上述软件后,系统将重新启动,Docker将要求您启用Hyper-V。单击“ 是,重新启动系统 ”

默认情况下,将启用Linux容器。您可以通过单击下面的鲸鱼图标来切换容器。

转到PowerShell并键入docker run hello-world,然后按Enter。您应该看到一条消息Hello from Docker'表示您的docker已正确安装。

阅读上面屏幕截图中提到的步骤。这就是我们之前谈过的内容。

如果您尝试从工作场所运行Docker,可能会遇到一些与代理相关的问题。您可以通过导航到设置来设置代理。

演示:将ASP.NET应用程序作为容器运行

Visual Studio 2017中创建一个新的ASP.NET MVC Core项目。在创建时,请确保选中“ 启用Docker支持 ”选项。

我打电话给我的应用程序aspnetapp'。启用docker支持后,将在Solution Explorer中创建名为dockerfile的文件。

使用以下代码替换此文件中的现有代码: 

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
 
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
 
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
 
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

转到PowerShell并导航到项目目录。在那里,运行命令:

docker build -t aspnetapp .

Docker Tutorial

构建项目后,运行以下命令:

docker run -d -p 8080:80 --name myaspnetapp aspnetapp

Docker Tutorial

一旦成功,请转到localhost8080以导航应用程序:

那么这里发生了什么?dockerfile提供了创建镜像所需的信息。例如,它表示应该使用基本镜像创建镜像作为Microsoft / dotnet:aspnetcore。运行build命令时会创建应用程序的镜像。如果在PowerShell中编写以下命令,则会看到列出的图像。

Docker images

当您使用docker run'命令运行镜像时,它将此图像作为容器运行,其中' myaspnetapp'是容器名称,aspnetapp'是镜像名称。该run命令指示它在端口8080上运行。因此,当您导航到时localhost:8080,您可以找到正在运行的容器化应用程序。您可以使用命令'docker ps查看所有正在运行的容器。

Docker Tutorial

有关此演示的更多信息,请参阅此处的官方docker网站。

因此,开发人员可以创建他们的图像并将其上传到存储库。当应用程序需要实时生成时,可以在生产机器上简单地运行此镜像。

现在让我们看一下,我们如何将MongoDB作为容器运行。

演示:安装MongoDB

传统的软件安装方式

现在让我们使用传统方法安装Mongo。如果我们转向其文档,它将列出安装MongoDB所需的步骤,包括运行执行程序,通过安装程序进行设置等。安装MongoDB是一个漫长的过程。

现在让我们看看docker如何简化这个过程。

将软件作为容器运行

转到Docker Hub并搜索Mongo

在我们运行命令之前,单击鲸鱼图标,转到设置 - >守护程序并将实验标志设置为true

完成后,docker将重新启动。然后,您可以在PowerShell或命令提示符中键入以下命令。

docker run --name some-mongo -d mongo:4.1

这里,docker安装一个名为some-mongo的容器。您可以随意提供其他名称。Mongo'是镜像名称,' 4.1'是其版本或标记。

它说已经下载了更新的镜像。

让我们使用以下命令来运行下载的镜像:

docker run some-mongo

我们将收到一条消息waiting for connections on port 27017'表示我们的服务器已启动并正在运行。

因此,打开另一个PowerShell实例并运行以下命令:

docker exec -it some-mongo mongo

然后输入命令:

show dbs

这表明我们的服务器中尚未创建任何数据库。我们现在可以在这里继续使用其他mongo db命令。

所以我们看到docker简化了安装软件的过程。

屏幕背后会发生什么?

您的操作系统可分为两个主要部分:内核和用户空间。内核可以控制硬件,并且包含驱动程序等。除了内核之外的所有应用程序,操作系统应用程序和库等都属于用户空间。用户空间通过内核访问硬件。

传统上,当我们安装软件时,我们只需安装应用程序并使用驱动程序和用户空间中已存在的库。但现在使用容器化方法,在创建镜像时,它将包含应用程序以及运行所需的其他驱动程序。因此,应用程序将独立于操作系统提供的资源。

Docker命令

docker run imagename

这将运行指定的镜像。这相当于在传统软件中运行执行程序。

docker -help

这将列出所有可用的docker命令。

docker ps

这将列出当前运行的容器。目前,如果我们在PowerShell中输入此命令,我们会得到以下输出:

Docker Tutorial

docker ps -a

这将列出所有正在运行和已退出的容器。

docker stop containername

这将停止软件。'docker ps -a'将容器列为已停止,但'docker ps'将不会列出它。

docker rm containername

这将删除容器。这就像卸载传统意义上的软件一样。'docker ps -a'docker ps'都不会列出它,因为容器已被删除。

docker images

这将列出下载的镜像。就传统的软件安装方法而言,镜像就像高管一样。

有关更多docker命令,请访问此处

如何将镜像上传到Docker Hub

在上面的第一个演示中,我们为本地存储的ASP.NET核心创建了一个镜像。我们现在来看看如何在Docker hub上传镜像。首先,您需要在docker hub上创建一个免费帐户。然后创建一个存储库。

powershell登录如下:

docker login

https://csharpcorner-mindcrackerinc.netdna-ssl.com/article/docker-tutorial/Images/docker1.png

然后运行以下命令:

https://csharpcorner-mindcrackerinc.netdna-ssl.com/article/docker-tutorial/Images/docker2.png

docker tag命令中,aspnetapp是镜像名称。然后是我的username/respository:tag

一旦镜像被推送到dockerhub上后,您可以在那里登录,然后您就可以在浏览器中看到该镜像。

https://csharpcorner-mindcrackerinc.netdna-ssl.com/article/docker-tutorial/Images/docker3.png

我希望这篇文章能让你更接近解开Docker的神秘面纱。如果您想进一步讨论,请随时与我联系。

 

原文地址:https://www.codeproject.com/Articles/1369926/Introduction-to-Dockers-Containers

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值