小马的世界

Docker备忘录

2022-12-26 · 4 min read

一些关于Docker的简单记录

什么是Docker

Docker是一种开源的轻量级容器虚拟化技术,可以让你在一个轻量级、可移植的容器内运行应用程序。Docker容器是由Docker镜像创建的,它们包含了运行应用程序所需的所有内容,包括代码、运行时、系统工具、系统库和设置。

Docker的容器完全使用沙箱机制,相互间不会有任何接口。

Docker中的几个重要概念

镜像Image

镜像就相当于你安装系统时的那个ISO文件,它相当于是一个root文件系统。

容器Conttainer

容器是镜像的一个实例。这有点像面向对象语言中的类和实例的关系。镜像是静态的,容器是动态的,容器可以创建、删除、启动、停止、暂停。

仓库Repository

仓库可看成一个代码控制中心,用来保存镜像。

一个例子

安装好Docker之后,Docker会给我们提供一个例子。下面我做简单翻译:
Getting Start 项目是一个简单的、包含了一切建立一个镜像并且在容器中运行的GitHub仓库。
通过在容器中运行Git克隆这个仓库:

docker run -name repo alpine/git clone https://github.com/docker/getting-started.git
docker cp repo:/git/getting-started/ .

现在构建镜像。Docker镜像是一个只为你的容器私有的文件系统。包含了你容器所需要的所有文件和代码

cd getting-started
docker build -t docker101tutorial .

现在就可以运行你的第一个容器了。
启动一个基于你刚刚在前一步构建的镜像的容器。运行一个容器可以让你的应用在私有资源中运行,安全地与你的物理机隔离开。在这里-d表示容器在后台以分离模式运行。-p 80:80表示将主机的80端口映射到容器的80端口。--name docker-tutorial要使用的镜像

docker run -d -p 80:80 --name docker-tutorial docker101tutorial

现在你可以在DockerHub上保存和分享你的镜像,其他人也可以简单的下载这个镜像,并且运行在任何目标主机上。

docker tag docker101tutorial inusturbo/docker101tutorial
docker push inusturbo/docker101tutorial

这时候去你的dockerhub上就可以发现你的docker镜像了。

我们的应用

在教程的剩余部分,我们将会做一个运行在Node.js上的简单的todo列表管理程序。不会Node.js也没关系,我们不需要Javascript的编码。
并且此时,你的开发团队很小,你只是构建一个程序来证明你有一个MVP(最小可行产品)。你想展示它是如何工作的,以及它能做什么。你无需考虑它如何在一个大团队,多个开发人员之间协作等问题。

获取我们的应用

在运行应用前,我们需要将程序源代码安装到我们的电脑上。对于真实项目,你通常会克隆一个存储库。但是在这里,我们创建了一个包含这个应用程序的ZIP文件。

  1. 下载ZIP。打开ZIP文件并解压。
  2. 解压后,可以使用IDE或者文本编辑器打开项目。你可以看到package.json和两个子目录src和spec

构建应用程序的容器镜像