💽 制作自己的镜像

## 为自己的 Web 项目构建镜像 示例项目代码:[https://github.com/gzyunke/test-docker](https://github.com/gzyunke/test-docker) 这是一个 Nodejs + Koa2 写的 Web 项目,提供了简单的两个演示页面。 软件依赖:[nodejs](https://nodejs.org/zh-cn/) 项目依赖库:koa、log4js、koa-router >s 本文档课件配套 [视频教程](https://www.bilibili.com/video/BV11L411g7U1?p=3) ## 编写 Dockerfile ```yaml FROM node:11 MAINTAINER easydoc.net # 复制代码 ADD . /app # 设置容器启动后的默认运行目录 WORKDIR /app # 运行命令,安装依赖 # RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。 # 例如 RUN npm install && cd /app && mkdir logs RUN npm install --registry=https://registry.npm.taobao.org # CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。 # 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。 # 例如 CMD cd /app && ./start.sh CMD node app.js ``` [Dockerfile文档](https://docs.docker.com/engine/reference/builder/#run) >s 实用技巧: 如果你写 Dockerfile 时经常遇到一些运行错误,依赖错误等,你可以直接运行一个依赖的底,然后进入终端进行配置环境,成功后再把做过的步骤命令写道 Dockerfile 文件中,这样编写调试会快很多。 例如上面的底是`node:11`,我们可以运行`docker run -it -d node:11 bash`,跑起来后进入容器终端配置依赖的软件,然后尝试跑起来自己的软件,最后把所有做过的步骤写入到 Dockerfile 就好了。 掌握好这个技巧,你的 Dockerfile 文件编写起来就非常的得心应手了。 ## Build 为镜像(安装包)和运行 编译 `docker build -t test:v1 .` > `-t` 设置镜像名字和版本号 命令参考:[https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/) 运行 `docker run -p 8080:8080 --name test-hello test:v1` > `-p` 映射容器内端口到宿主机 `--name` 容器名字 `-d` 后台运行 命令参考文档:[https://docs.docker.com/engine/reference/run/](https://docs.docker.com/engine/reference/run/) ## 更多相关命令 `docker ps` 查看当前运行中的容器 `docker images` 查看镜像列表 `docker rm container-id` 删除指定 id 的容器 `docker stop/start container-id` 停止/启动指定 id 的容器 `docker rmi image-id` 删除指定 id 的镜像 `docker volume ls` 查看 volume 列表 `docker network ls` 查看网络列表 >d 觉得老师讲得不错的话,记得点赞、关注、分享,鼓励下老师 你们的鼓励会让老师更加有动力继续创造更多更好的内容 你可以到 [Github issue](https://github.com/gzyunke/test-docker/issues) 给我提问或反馈遇到的问题。