步骤:
1.创建Dockerfile
FROM node:10-alpine #基镜像
RUN mkdir -p /src/app #构建镜像的过程中run mkdir -p /src/app命令来创建/src/app文件夹
WORKDIR /src/app #将/src/app镜像设置为工作目录
COPY package.json /src/app/package.json #(构建镜像时会将当前目录下的所有文件copy到docker daemon去,这个叫上下文环境。此处COPY package.json /src/app/package.json是指将上下文环境下的package.json拷贝到/src/app里去)
RUN npm install #构建镜像时运行npm install
COPY . /src/app #构建镜像时将上下文环境下的(即docker daemon里的当前目录)copy到/src/app里去, .dockerignore让指定文件或文件夹不要被upload上去
EXPOSE 3000 #容器的对外暴露端口是3000
CMD ["npm", "start"]#容器启动后的初始命令
2. 构建镜像:
docker build -t my-nodejs-app . -f Dockerfile #这里的. 不要漏掉,指的是dockerfile所在的当前目录,docker引擎会将当前目录下的所有文件传给docker daemon -f 为指定dockerfile的路径
3. 构建镜像成功后可以通过docker image |grep '镜像名' 来查看
4. 生成容器container
docker run -d --name my-nodejs-app -p 3000:3000 my-nodejs-app
以上命令中,-d表示在后台运行
--name 表示生成的容器的名字
-p表示将host上的端口映射到容器的端口上,前面的是host的端口,后面的是容器的端口
最后的my-nodejs-app是镜像名
5. docker ps 来查看容器,如果容器没有显示,用docker ps -a来查看
如上图, 容器的状态是exited (1)表明容器没有正常启动
6.检查log查看容器没有正常启动的原因:
docker container logs 886c82145c8b
7.启动容器
docker container start 886c82145c8b
8.重启容器
docker container restart 886c82145c8b
9.停止容器
docker container stop 886c82145c8b
10.进入容器
docker exec -it 886c82145c8b