Docker基础——容器化一个应用

将一个普通的应用容器化是一件非常简单的事情,我们只需要在项目的根目录下编写一个Dockerfile文件,在文件中注明项目运行依赖的环境信息,项目中哪些是必要部分,不在项目目录中的依赖目录在哪里。
我们以node项目的Dockerfile为例子:
FROM:指定了镜像的运行环境。
WORKDIR:指定了工作路径。
COPY:指定了需要将工作路径下的哪些文件复制到镜像中。
RUN:文件拷贝工作完成后执行的命令
CMD:RUN指令执行完成后执行的命令
EXPOSE:对外暴露3000端口
这是一个比较简单的Dockerfile示例,有了它我们就可以使用“docker build”制作docker image。
镜像的制作是分层的,比如此例中的环境依赖node:18-alpine,这是我们指定的工作目录中不存在的,所以需要下载node的镜像作为我们制作的镜像的其中一层。
我们可以再执行 docker build 命令时增加 -t 标记,为构建出的镜像增加标记比如 -t getting-started
,这样会让使用者更好的了解到镜像的含义。结尾的“.”意为让docker在命令执行的目录搜索Dockerfile。
当我们构建好了一个镜像我们就可以使用它初始化一个容器:
上述命令中 docker run 是使用镜像运行容器的命令,-dp 是 -d -p 的简写:-d(--detach的缩写) 意为后台运行、-p (--publish的缩写)意为映射端口,端口映射的书写格式是 "主机IP : 端口号" : "容器端口号"。在此例中是将ip地址为127.0.0.1的3000端口映射到容器的3000端口上,也就是说我们访问127.0.0.1:3000实际上是访问该容器的3000端口,如果没有端口映射将无法访问到容器应用。
当我们运行一个容器以后可以使用一下命令查看所有容器:
会得到这样的结果:
如果只想查看正在运行中的容器,只需要把"-a"标记去掉即可