Docker(🐋)学习笔记-1

本文最后更新于:2023年5月2日 凌晨

Docker是什么?

是一条🐋是一个应用容器引擎。反正就是你可以用它来打包、传输和新机器上快速部署应用。(为应用提供一个独立的、隔离的沙盒环境)

什么是容器?

这里引用官方文档的原文,一个容器可以总结以下几点:

  • 是一个镜像的可运行实例。你能够通过使用DockerAPI和CLI来创建、启动、停止、移动或是删除一个容器。
  • 可以运行在本地或虚拟机上,又或是部署在云上。
  • 是便携的(可运行在任何操作系统上)
  • 和其他的容器是隔离的,并且运行它自己拥有的软件、二进制文件和配置。

在自己的机器上安装Docker

官方提供了三种平台(Mac、Windows、Linux)的安装文档:Get Docker。我自己是Windows平台。

Docker的安装可能比较复杂(因为还需要Windows安装Linux子系统和虚拟机平台支持什么的)!请耐心一步一步来并解决各种问题!

安装成功后的Docker Desktop界面:Docker Desktop
同样的,你也可以在命令行中使用docker run hello-world命令进行验证,安装好后应该如图所示:Docker Cli

跟着官方创建一个容器并在其上面启动app

首先,我们把项目克隆到本地:git clone https://github.com/docker/getting-started.git
然后在vscode中打开项目文件夹(当然了,vscode需要安装Docker扩展)。
注意到目录中的Dockerfile了吗?它是个简单的指令脚本,而且没有文件扩展,Docker就是用这个脚本来构建容器镜像的。
现在,让我们在当前文件夹的子文件夹app中创建一个Dockerfile脚本。

  • 第一步,打开vscode的悬浮命令行面板(快捷键为Ctrl+Shift+P),输入Terminal,找到Terminal:Create New Terminal并单击。
  • 哦,当然,记得使用Command Prompt而不是使用Powershell,下面的命令在Powershell中并不适用。要使用Command Prompt,在刚刚弹出的终端窗口的右上角,点击+...之间的按钮,在弹出的列表中选择即可。
  • 第二步,执行以下命令:cd app,进入app文件夹;type nul > Dockerfile,创建Dockerfile脚本文件。
    然后将以下内容复制到Dockerfile中:
    1
    2
    3
    4
    5
    6
    7
    8
    # syntax=docker/dockerfile:1

    FROM node:18-alpine
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]
    EXPOSE 3000
    第一行的FROM指令初始化了一个新的构建阶段并为后续指令设置基本镜像,一个合法的Dockerfile必须以该指令开头。
    第二行的WORKDIR就是为后续的RUNCMDENTRYPOINTCOPYADD设置工作路径。
    第三行的COPY指令从<src>复制新文件或目录,并将它们添加到容器的文件系统路径<dest> 中。 第四行的RUN就是执行跟在其后面的指令。 第五行的CMD指令的主要目的是为正在执行的容器提供默认值,这些默认值可以包含可执行文件,也可以在你指定ENTRYPOINT的情况下省略可执行文件。 第六行的EXPOSE指令告知Docker容器在运行的时候监听指定的网络端口,你可以指定端口是监听UDP还是TCP(EXPOSE 3000/udp),默认为TCP。 那么接下来就能够构建一个容器镜像了。在app目录下使用如下命令:docker build -t getting-started .`(了解更多有关该指令的信息,可以参考官方文档

    如果本地没有所需要的镜像(FROM指定的),那么Docker就需要从网上拉取。

    最后一步,在我们的容器里启动app!输入指令:docker run -dp 3000:3000 getting-started来启动。

更新应用

TO DO…

参考文档

Docker官方文档。


这里有一只爱丽丝

希望本文章能够帮到您~


Docker(🐋)学习笔记-1
https://map1e-g.github.io/2023/04/27/docker-learning-1/
作者
MaP1e-G
发布于
2023年4月27日
许可协议