容器是一类隔离的进程,具有独立的文件系统和网络。它们在与主机分离的环境中运行,但仍然像普通操作系统进程一样执行任务。
要在容器内运行镜像,我们使用 docker run 命令,只需要一个参数,那就是镜像名称。下面示范如何启动镜像并验证其运行状态。请在终端执行以下命令。
$ docker run node-docker
执行后你可能不会立刻看到回到命令提示符,因为应用程序在容器内作为一个 REST 服务器持续监听请求,直到手动停止容器。
打开一个新的终端,使用 curl 向服务器发出请求以测试连接。
$ curl –request POST
–url http://localhost:8000/test
–header ‘Content-Type: application/json’
–data ‘{“MSG”: “Testing”}’
curl: (7) Failed to connect to localhost port 8000: connection refused
连接被拒绝表明容器中的应用尚未对外暴露端口,或者网络隔离导致无法从宿主机访问。接下来将容器端口映射到本机端口以便通信。
要停止当前容器,请按 Ctrl-C(若容器在前台运行)。
要将容器的端口暴露给宿主机,需要在启动时使用 –publish(-p)选项,格式为 hostPort:containerPort。例如,将容器内的 8000 端口映射到宿主机的 8000 端口,可以这样写:
$ docker run –publish 8000:8000 node-docker
重新在新终端执行上述 curl 测试命令。
$ curl –request POST
–url http://localhost:8000/test
–header ‘Content-Type: application/json’
–data ‘{“MSG”: “Testing”}’
{“code”:”success”,”payload”:[{“MSG”:”Testing”,”id”:”dc0e2c2b-793d-433c-8645-b3a553ea26de”,”createDate”:”2020-09-01T17:36:09.897Z”}]}
连接成功后,你应能看到容器中运行的应用程序在端口 8000 上接收请求,并在终端中记录日志。
2020-09-01T17:36:09:8770 INFO: POST /test
如需停止容器,请再次按 Ctrl-C。
