linux容器封装 -> 容器 -> 虚拟机
它就是个壳儿
从官网下载之后,会被指引着运行一个例子
Image被看作容器模板,docker需要根据image生成容器实例。
常用命令
// 拉取image
docker image pull hello-world
// 本机image列表
docker image ls
// 运行、生成容器实例
// docker container run命令具有自动抓取 image 文件的功能
docker container run hello-world
不会自动终止的容器需要手动关闭,比如
docker container run -it ubuntu bash
docker container kill [containID]
容器和image都是一个文件。一旦容器生成,就会同时存在两个文件: image 文件和容器文件。
# 列出本机正在运行的容器
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 删除容器文件
$ docker container rm [containerID]
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all
DEMO
- 创建一个简单的koa项目
- 在根目录添加 .dockerignore,忽略的文件不打包进image
.git node_modules npm-debug.log
- 添加 Dockerfile 文件
// 官方 node image FROM node:10 // 项目文件(除了.dockerignore)拷贝进image的目录 COPY . /app // 工作路径 WORKDIR /app // image 构建阶段 执行的命令 RUN npm install --registry=https://registry.npm.taobao.org // docker暴露的接口,不是服务器的真实接口↓ EXPOSE 4000 // 容器启动后执行的命令 CMD node index.js
- 打包image
docker image build -t koa-docker .
- 运行、生成容器
docker container run -p 8000:4000 -it koa-docker /bin/bash // -p 容器的4000端口映射真实的8000端口 // -it shell映射 // /bin/bash 保证用户可以使用 Shell,会覆盖CMD命令 // 或者 docker container run --rm -p 8000:3000 -it koa-demo:0.0.1 // —rm 容器终止运行后自动删除容器文件
其它指令
# 查出容器的 ID
$ docker container ls --all
# 删除指定的容器文件
$ docker container rm [containerID]
# 运行(不生成)容器
$ docker container start [containerID]
$ bash container stop [containerID]
# 容器运行时的日志
$ docker container logs [containerID]
# 进入一个正在运行的 docker 容器
$ docker container exec -it [containerID] /bin/bash
# 从正在运行的 Docker 容器里面,将文件拷贝到本机
$ docker container cp [containID]:[/path/to/file] .
网友评论