Docker入门使用-1

概览

欢迎!非常兴奋你想要学习Docker。
这个教程一步步的指导你如何开始使用Docker,这个教程中,你将学习和做下面的事情:

  • 构建一个镜像并运行为容器。
  • 使用Docker Hub分离镜像。
  • 使用带有数据库多个容器部署Docker应用程序。
  • 使用Docker Compose运行应用程序。

在你上手这部分教程之前,你应该先学习镜像和容器。

什么是容器

简单来说,容器就是一个沙盒,运行在你的机器上,和宿主机上其他所有进程隔离。这种隔离利用了kernel namespaces and cgroups,一种已经在Linux中使用了很长时间的功能。Docker使用这种功能易于使用。总结下,一个容器:

  • 一个运行的镜像实例。你可以使用Docker API或CLI(command-line interface)创建、启动、停止、移动或删除一个容器。
  • 可以运行在本地机器、虚拟机或部署到云上。
  • 可移植(可以运行在任何操作系统上)。
  • 和其他容器隔离,运行它自己的软件、二进制文件和配置。

什么是镜像

当运行一个容器,它使用的是隔离的文件系统。这个自定义的文件系统是容器的镜像提供的。由于这个镜像包含容器的文件系统,它必须包含运行一个应用所需的一切——所有依赖,配置、脚本、二进制文件等。这个镜像也包含容器的其他配置,比如环境变量,默认运行的命令和其他元数据。
在这个教程中,你将更加深入的学习镜像,包含的主题有层、最佳实践等。

容器化一个应用

下面的教程,你将使用一个Node.js编写的待办列表管理器软件。如果你不熟悉Node.js,不用担心。这个教程不需要任务JavaScript经验。
为完成这个教程,你需要以下内容:

  • 本地运行的Docker。若没有,本专栏前端有专门的介绍,或参照download and install Docker
  • 一个Git客户端。
  • IDE或文本编辑器来编辑文件。Docker推荐使用Visual Studio Code
  • 对镜像和容器有概念上的理解。

获取APP

在运行这个程序之前,你需要将程序源码下载到你的电脑上。

  1. 使用下面的命令克隆getting-started repository
$ git clone https://github.com/docker/getting-started.git
  1. 查看克隆仓库的内容。在getting-started/app目录下,你会看到package.json和两个子目录(src和spec)

image.png

构建APP的容器镜像

为了构建镜像,你需要用到Dockerfile。Dockerfile是一个简单文本文件,没有扩展名,包含一组脚本指令。Docker使用这个脚本构建镜像。

  1. 在app目录下,package.json同位置,创建一个Dockerfile名称的文件。根据你的操作系统各类,你可以使用下面的命令来创建这个Dockerfile。

Mac / Linux

在终端,运行下面的命令列表。
修改app目录。使用你本地getting-started/app所在目录替换下面命令中的/path/to/app。

cd /path/to/app

创建一个空的、名称Dockerfile的文件。

touch Dockerfile

Windows

在Windows命令提示符中,运行下面的命令行。
修改app目录:使用你本地getting-started/app所在目录替换下面命令中的/path/to/app。

cd \path\to\app

创建一个空的、名称Dockerfile的文件。

type nul > Dockerfile
  1. 使用文本编辑器或代码编辑器,将下面的内容添加到Dockerfile中。
# syntax=docker/dockerfile:1
   
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
  1. 使用下面的命令构建镜像。

在终端内,修改getting-started/app目录:使用你本地getting-started/app所在目录替换下面命令行中的/path/to/app。

cd /path/to/app

构建镜像:

docker build -t getting-started .

docker build命令使用Dockerfile构建一个新的镜像。也许你已经注意到Docker下载了很多层。这是因为你要求构建器从node:18-alpine镜像开始。但,因为你本地机器上没有这个镜像,Docker需要下载它。
Docker下载这个镜像后,Dockerfile中的指令拷贝你的应用程序,并且使用yarn安装程序的依赖。CMD指令指定从该镜像启动一个容器时,默认要执行的命令。
最后,-t给镜像打上标签,可以简单的认为给这个最终的镜像赋一个可读的名称。因为你给这个镜像命名为getting-started,当你运行一个容器时你可以引用这个镜像。
docker build命令后台的 . 告诉Docker从当前目录下寻找Dockerfile

启动一个app容器

现在你有了一个镜像,你可以在一个容器中运行这个程序。为完成这个操作,你会用到docker run命令。

  1. 使用docker run命令启动容器,指定你刚才创建的镜像的名称。
 docker run -dp 3000:3000 getting-started

使用-d标签,在后台运行新的容器。使用-p映射宿主机的3000端口到容器的3000端口,没有端口映射,你将无法访问该应用。

  1. 几秒后,打开你的浏览器,输入http://localhost:3000,你就会看到你的APP。

image.png

  1. 随意添加一到两个条目,确认该APP按照你的期望工作。你可以将条目标记为完成,并删除。前端成功的将条目存储在后端。

到目前为止,你已经运行了一个待办列表管理器,有几个条目,均有你自己创建。
如果你快速查看下你的容器,你至少会看到一个容器在运行,使用的是getting-started镜像和3000端口。为了看你的容器,你可以使用CLI或Docker桌面图形接口。

命令行

在终端运行docker ps命令,列出你的容器。

docker ps

出现下面的内容

CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS       PORTS                  NAMES
58853bcb4c8e   docker/getting-started   "/docker-entrypoint.…"   9 months ago   Up 7 hours   0.0.0.0:8080->80/tcp   getstarted

Docker桌面

在Docker桌面,选择Containers查看容器列表。
image.png

更新应用程序

在第2章节,你使一个待办应用软件容器化,在这部分,你会更新这个应用和其镜像。你也会学到如何停止、删除一个容器。

更新源码

在下面的步骤中,当待办列表中没有条目时,你会将显示的“无内容”修改为“你还没有待办事项!在上面添加一个”。

  1. 在src/static/js/app.js文件中,使用新的空内容修改第56行。
...
 -            <p className="text-center">No items yet! Add one above!</p>
 +            <p className="text-center">You have no todo items yet! Add one above!</p>
 ...
  1. 构建你更新版本后的镜像,使用和在第2章节中同样的docker build命令:
docker build -t getting-started .
  1. 使用更新后的代码启动一个新的容器。
docker run -dp 3000:3000 getting-started

你也许会看到下面的异常(IDS 会不一样)

docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell 
(aa23232ca4ddfebarte794dffb36hfr125708e34d34d7f4532eaf16324aabde9dd): Bind for 0.0.0.0:3000 failed: port is already allocated.

异常出现的原因是老的容器在运行时,你不能启动一个新的容器。原因是老的容器已经在使用主机的3000端口,在这个机器上只能有一个进程(包括容器)监听指定的端口。为修复这个问题,你需要删除老的容器。

删除老的容器

为了删除一个容器,你首选要做的是先停止它。它一旦停止,你就可以删除它。你可以通过CLI或Docker桌面图形化接口删除。选择你最舒服的方式。

使用CLI删除容器

  1. 使用docker ps获取待删除的容器id。
docker ps
  1. 使用docker stop停止容器。使用docker ps输出的ID替换。
docker stop <the container-id>
  1. 一旦容器停止,你就可以使用docker rm命令删除它。
docker rm <the-container-id>

docker rm命令中添加force标签,可以同一个命令同时停止、删除一个容器。比如:docker rm -f <the-container-id>

启动更新后的APP容器

  1. 现在使用docker run命令启动更新后的APP容器。
docker run -dp 3000:3000 getting-started
  1. 刷新浏览器http://localhost:3000,你会看到更新后帮助文本

image.png

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Apollo Docker Quick Start Files是用于在Docker容器中快速启动Apollo配置中心的文件集合。Apollo配置中心是携程框架部门开发的分布式配置管理平台,用于实现配置集中管理和动态配置更新的需求。 使用Docker容器来快速启动Apollo配置中心可以提高开发和部署的效率,方便跨平台和环境的使用。Apollo Docker Quick Start Files包含了配置中心的相关配置文件、Dockerfile和启动脚本等,使用这些文件可以快速构建和启动配置中心的Docker容器。 在启动Docker容器之前,我们需要先配置好Apollo配置中心的相关信息,在配置文件中指定数据库、端口等参数。然后,使用Docker命令构建Docker镜像并生成Docker容器,通过运行启动脚本,让Docker容器启动并运行Apollo配置中心。 通过使用Apollo Docker Quick Start Files,可以方便地在各种环境中部署和启动Apollo配置中心,提高系统的可维护性和可扩展性。同时,通过Docker的特性,我们可以更好地管理和监控配置中心的运行状态,更灵活地进行配置的更新和维护。 总之,Apollo Docker Quick Start Files提供了一种便捷的方式来快速部署和启动Apollo配置中心,使得我们能够更加高效地管理和使用分布式配置,提高系统的稳定性和可靠性。 ### 回答2: Apollo是一个分布式配置中心,用于管理和配置分布式系统中的应用程序的配置信息。Docker是一种容器化平台,可以将应用程序打包成容器,并在不同的环境中快速部署和运行。 Apollo-Docker-Quick-Start-Files是一个用于快速开始使用Apollo和Docker的文件集合。它包含了一系列的配置文件和脚本,可以帮助用户快速搭建Apollo配置中心和使用Docker部署应用程序。 在这个文件集合中,用户可以找到一些配置文件示例,如application.properties和meta-server.properties,这些文件定义了Apollo的配置中心和元数据服务器的相关配置信息。用户可以根据自己的需要进行修改和定制。 此外,还有一些脚本文件,如docker-compose.yaml和Dockerfile。这些文件用于定义Docker容器的构建和部署规则。用户可以使用docker-compose命令,根据docker-compose.yaml文件一键启动Apollo配置中心和应用程序的Docker容器使用Apollo-Docker-Quick-Start-Files,用户可以轻松地搭建Apollo配置中心和部署应用程序。它提供了一种快捷的方式,帮助用户快速入门使用Apollo和Docker进行分布式系统的配置和部署管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值