摘要:如果目标路径不存在,将自动创建。用来指定工作目录,即是执行所在的目录。命令用来执行命令,这里用来安装命令用来声明运行时容器提供服务端口,但要注意运行时并不会开启这个端口的服务。执行正常展示如下添加参数可以查看所有已启动容器。
编写 Dockerfile
以 express 自动创建的目录为例,目录结构如下:
├── /bin │ └── www ├── /node_modules ├── /public ├── /routes ├── /views ├── package-lock.json ├── package.json ├── ecosystem.config.js ├── app.js └── Dockerfile
在项目目录下新建 Dockerfile 文件
FROM node:10.15 MAINTAINER sunhengzhe@foxmail.com COPY . /app/ WORKDIR /app RUN npm install pm2 -g EXPOSE 8003 CMD ["pm2-runtime", "ecosystem.config.js"]
FROM 指定基础镜像为 node 的 10.15 版本(node 官方版本可 在此查看)
MAINTAINER 说明镜像的维护者
COPY 命令将宿主机的文件拷贝到镜像中,格式为 COPY [--chown=
WORKDIR 用来指定工作目录,即是 CMD 执行所在的目录。
RUN 命令用来执行 shell 命令,这里用来安装 pm2
EXPOSE 命令用来 声明 运行时容器提供服务端口,但要注意运行时并不会开启这个端口的服务。这个命令主要是帮助使用者理解这个镜像服务的守护端口,以方便配置映射;另外在使用随机端口映射时,会自动随机映射 EXPOSE 的端口
CMD 是默认的容器主进程的启动命令
构建镜像在项目目录下执行
docker build -t express-app:v1 .
如果构建成功,查看镜像列表
docker images
应该会输出镜像 express-app:v1
运行容器docker run -d -p 8003:3000 --name="express-app" express-app:v1
docker run 是 docker create 和 docker start 两个命令的简写。
-d 即 --detach,代表让容器后台运行。
-p 指定宿主机和容器的端口映射,左边为宿主机的端口,右边为容器的端口,也就是说访问宿主机的 8003 端口,会映射到容器内的 3000 端口。
--name 设置容器别名,如果不指定,docker 会随机生成一个名字,比如 tender_swirles 之类的。
执行
docker ps
正常展示如下
添加 -a 参数可以查看所有已启动容器。
进入容器如果要进入容器进行操作,执行下面命令
docker exec -it express-app bash
-i 与 -t 一般结合使用,-i 启动交互模式,-t 指定需要分配终端,可以自行尝试不传其中一个的效果。
与 exec 类似的还有 attach 命令,命令为 docker attach express-app,但从这个 stdin 中 exit,会导致容器的停止,所以推荐使用 exec 命令。
关闭操作 停止容器docker stop express-app删除容器
docker rm express-app
如果删除时容器还在运行,需要加上 -f 参数
删除镜像docker rmi express-app:v1
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28056.html
摘要:编写代码的开发人员必须负责代码的生产部署。构建和部署链需要重大更改,以便为微服务环境提供正确的关注点分离。该对象会在之后的时被这时的回调函数会被调用,并输出。微服务部署及集成部署微服务时有一个原则一个容器中只放一个服务,可以使用编 前几天在微信群做的一次分享,整理出来分享给大家,相关代码请戳 https://github.com/Carrotzpc/docker_web_app sho...
摘要:编写代码的开发人员必须负责代码的生产部署。构建和部署链需要重大更改,以便为微服务环境提供正确的关注点分离。该对象会在之后的时被这时的回调函数会被调用,并输出。微服务部署及集成部署微服务时有一个原则一个容器中只放一个服务,可以使用编 前几天在微信群做的一次分享,整理出来分享给大家,相关代码请戳 https://github.com/Carrotzpc/docker_web_app sho...
摘要:本文将采用技术部署一个简单的应用,它包括一个简单的前置网关服务器以及业务服务器。同时使用配置特定镜像,采用进行容器编排,解决依赖网络等问题。服务器首先搭建一个单节点缓存服务,采用官方提供的最新版镜像,无需构建。 docker是一种虚拟化技术,可以在内核层隔离资源。因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境。这大大简化了应用部署,让运维人员无需陷入无止境繁琐...
摘要:本文将采用技术部署一个简单的应用,它包括一个简单的前置网关服务器以及业务服务器。同时使用配置特定镜像,采用进行容器编排,解决依赖网络等问题。服务器首先搭建一个单节点缓存服务,采用官方提供的最新版镜像,无需构建。 docker是一种虚拟化技术,可以在内核层隔离资源。因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境。这大大简化了应用部署,让运维人员无需陷入无止境繁琐...
摘要:化应用程序此示例的目的是向你展示如何将应用程序放入容器中,该指南旨在用于开发,而不用于生产部署,本指南还假设你有一个有效的安装,并且基本了解应用程序的结构。 Docker化Node.js Web应用程序 此示例的目的是向你展示如何将Node.js应用程序放入Docker容器中,该指南旨在用于开发,而不用于生产部署,本指南还假设你有一个有效的Docker安装,并且基本了解Node.js应...
阅读 2584·2023-04-25 20:50
阅读 3929·2023-04-25 18:45
阅读 2213·2021-11-17 17:00
阅读 3323·2021-10-08 10:05
阅读 3073·2019-08-30 15:55
阅读 3487·2019-08-30 15:44
阅读 2355·2019-08-29 13:51
阅读 1111·2019-08-29 12:47