docker安装
安装地址
docker是什么
linux 容器的一种封装,提供简单易用的容器使用接口。
- 将应用程序与依赖打包到一个文件里,运行文件就生成一个虚拟容器。程序在虚拟容器里仿佛在真实物理机上。
1. 查看
docker version
# or
docker info
2. image(镜像)文件
# 列出本机所有 image 文件
docker image ls
# delete image
docker image rm [imageName]
从仓库抓取 image 到本地
library/hello-world
是 image 文件在仓库里面的位置,其中library
是 image 文件所在的组(默认组,可省略不写),hello-world
是 image 文件的名字。
docker image pull library/[imageName]
# or
docker image pull [imageName]
运行 image 文件: 分为2种
# 新建容器,多次运行会重复生成
docker container run [imageName]
# 单纯启动
docker container start [containerID]
有些容器会自动终止,有些不会自动终止的是因为——提供的是服务,需手动终止
# 强行立即终止,那些正在进行中的操作会全部丢失。
docker container kill [containID]
# or
# 自行进行收尾清理工作后再停止
docker container stop [containerID]
3. 容器文件
- **mage 文件生成的容器实例,本身也是一个文件,称为容器文件。**也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
# 列出本机正在运行的容器
docker container ls
# 列出本机所有容器,包括终止运行的容器
docker container ls --all
# 终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
docker container rm [containerID]
4. 实例:制作docker容器
4.1 进入项目根目录
git clone
cd koa-demos
4.2 新建文件 .dockerignore
- 以下表示这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
.git
node_modules
npm-debug.log
4.3 新建文件 Dockerfile
# 该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
FROM node:8.4
# 将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录
COPY . /app
# 指定接下来的工作路径为/app。
WORKDIR /app
# 在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
RUN npm install --registry=https://registry.npm.taobao.org
# 将容器 3000 端口暴露出来, 允许外部连接这个端口。
EXPOSE 3000
4.4 创建 image 文件
-t
参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest
。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
# 注意最后有个.
docker image build -t koa-demo .
# or
docker image build -t koa-demo:0.0.1 .
4.5 生成容器
p
参数:容器的 3000 端口映射到本机的 8000 端口。it
参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。koa-demo:0.0.1
:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。/bin/bash
:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
docker container run -p 8000:3000 -it koa-demo /bin/bash
# or
docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
4.6 运行
- Koa 框架已经运行起来了。打开本机的浏览器,访问 http://127.0.0.1:8000,网页显示"Not Found",这是因为这个 demo 没有写路由。
node demos/01.js
4.7 终止运行
docker container kill [containID]
# or
docker container stop [containerID]
参考自阮一峰docker教程