搞懂Docker(三)- 容器化app

在这里插入图片描述

容器化一个App

获取示例程序

  1. 示例程序
    或者
    示例程序
    获取示例程序
  2. 程序结构如下
├── getting-started-app/
│ ├── package.json
│ ├── README.md
│ ├── spec/
│ ├── src/
│ └── yarn.lock

创建App的镜像

创建镜像需要使用DockerfileDockerfile是一个文本文件,没有扩展名,内容包含脚本命令。Docker使用这些指令创建镜像。

  1. getting-started-app目录下,也就是package.json文件所在的目录下,创建一个文件,名称为Dockerfile
$ cd /path/to/getting-started-app
$ touch 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. 使用如下命令创建镜像
$ cd /path/to/getting-started-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

启动容器

现在已经制作好了镜像,你可以使用docker run命令在容器中运行这个程序。

  1. 使用刚才指定的镜像名,通过docker run运行程序。
$ docker run -dp 127.0.0.1:3000:3000 getting-started

这个-d选项(–detach)会导致容器在后台运行。这意味着,Docker启动了你的容器,然后返回到命令行窗口。你可以通过执行docker ps 命令查看容器是否启动。
这个-p选项(–publish)创建了一个主机和容器之间端口的映射。-p选项的值的格式为HOST:CONTAINER,其中HOST是主机的地址,CONTAINER是容器的端口。这个命令开放了容器的端口3000给127.0.0.1:3000(localhost:3000)。没有这个映射,你不能在宿主机访问容器内的程序。

注意,你现在如果在跟宿主机同一网络的外部的机器上是访问失败的,你需要修改命令docker run -dp 3000:3000 getting-started

  1. 随后,你就可以访问 http://localhost:3000,你将会看到下面的效果
    在这里插入图片描述
  2. 添加一项或几项,看看它运行的怎么样。你可以标记一项为已完成,或者删除它。

你如果看一下你的容器,你将看到至少有一个在端口3000上运行着的容器使用了getting-started镜像。你可以执行如下命令查看你的容器。

$ docker ps

将输出以下内容

CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS         PORTS                                       NAMES
d8abacc5b4c5   getting-started   "docker-entrypoint.s…"   28 minutes ago   Up 4 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   optimistic_ellis

总结

这篇文章,我们学习了利用Dockerfile创建镜像的基本方法。一旦你创建好了镜像,你就可以用它运行容器。
下一篇文章,我们来学习当你修改了程序,如果创建一个新的镜像更新运行中的容器,你还会学到更多的命令。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值