本篇内容来源于官方文档:docker docs/Get started/Part 2: Containerize an application
在完成上一篇内容:windows客户端的安装和简单的镜像操作后,我们这篇来学习如何将开发好的应用程序装载进容器中。我们将使用一个运行在Node.js上的简单todo列表管理器。(如果你不熟悉Node.js也不必担心,本文不需要任何JavaScript的相关经验)
获取应用程序
如果你已有自己开发完成的Web项目是再好不过,这里官方同样提供了一个项目的源代码供我们练习。
-
使用Git命令克隆源代码
git clone https://github.com/docker/getting-started-app.git
-
获取本文作者预下载的内容(已提供在文章顶部)
建立应用程序的镜像
Docker使用Dockerfile脚本来构建容器镜像。(Dockerfile是一个基于文本没有任何扩展指令脚本的文件)
-
在我们刚下载的
getting-started-app
目录中,在package.json
同目录下创建一个名为Dockerfile
的文件 -
使用任何文本编辑器在文件中添加以下内容
# syntax=docker/dockerfile:1 FROM node:18-alpine WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] EXPOSE 3000
-
在文件夹的空白处,按住
Shift
键的同时点击鼠标右键,选择在此处打开PowerShell窗口
,运行以下代码docker build -t getting-started .
代码解读:
docker build
:使用Dockerfile文件来生成新镜像。(如果本机器未安装Node.js镜像,则需要花费较长时间下载)-t
:标记您的镜像,给本次生成的镜像命名.
:最后的.
是不可遗漏的,它告诉了Docker在此目录下寻找Dockerfile文件
-
完成镜像的生成后,可以使用
docker images
命令或者Docker客户端查看当前镜像列表
启动一个应用容器
现在我们可以使用docker run
命令来在容器中运行我们刚才生成的镜像
-
运行容器并指定需要装载的镜像名称
docker run -dp 127.0.0.1:3000:3000 getting-started
代码解读:
-d
:"–detach"的缩写,容器可以在后台保持运行-p
:"–publish"的缩写,创建主机和容器之间的端口映射HOST:CONTAINER
:将容器的端口映射到主机上的地址,上面代码意味着将容器端口3000发布到主机上的127.0.0.1:3000
-dp
:当两个标签都为单字母时,可以合并写在一起
-
当返回一串字符(容器id)后意味着容器已成功启动,我们可以在浏览器中输入刚才映射的地址进入该应用
-
我们正常的创建和完成待办事项,数据都会被存储在后台的数据库中
相关操作命令
在完成本文内容的学习后,可以简单回顾一下和了解相关命令操作
docker build [可选项] <仓库名>:<版本号> <镜像地址>
构建镜像-> docker build -t vieux/apache:2.0 .
docker run [可选项] <镜像名>
创建和运行容器-> docker run -dp 127.0.0.1:3000:3000 --name todo-list getting-started
docker ps
# 查看当前运行中的容器
docker rm <container-id>
# 删除指定id的容器
docker start/stop <container-id>
# 启动/停止指定id的容器
docker images
# 查看镜像列表
docker rmi <image-id>
# 删除指定id的镜像
docker volume ls
# 查看volume列表
docker network ls
# 查看网络列表