docker 的使用体验
基于 windows 10 操作系统
下载
windows 系统下载 Docker CE for Windows(stable)
安装后可能需要重启。
修改为国内镜像
- windows C:\Users\你的用户名.docker\daemon.json
- Linux /etc/docker/daemon.json
1 | { |
修改后重启 docker 右键通知托盘里的 Docker 图标 选择 Restart 即可
容器介绍
- 一个 image 文件可生成多个 容器实例文件
- image 可继承其他的 image 文件,一般都是继承 image 再添加自己的内容形成自己的 image
- 容器运行后可自动停止,也可持续运行
- 容器停止后容器文件不会被删除
- 容器在各系统上是通用的
常用命令
1 | # 验证安装 |
批量操作命令
1 | # 停用全部容器 |
####发布 image 命令1
2
3
4
5
6
7
8
9
10
11# 登陆 docker
docker login
# 给 image 打上 Tag
docker tag <image> username/repository:tag
# 上传到 Docker Hub
docker push username/repository:tag
# 运行在线的 image
docker run username/repository:tag
创建定制的 image
.dockerignore 忽略文件1
2
3.git
node_modules
npm-debug.log
Dockerfile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 继承官网 node image 版本 8.4
FROM node:8.4
# 当前目录所有文件 拷贝到 image 文件的 /app 目录
COPY . /app
# 指定工作路径为 /app
WORKDIR /app
# 在 /app 目录下,运行 npm install 命令。安装后的依赖将打包进 image 文件
# RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件
RUN npm install --registry=https://registry.npm.taobao.org
# 开放 3000 端口,允许外部连接该端口
EXPOSE 3000
# 容器运行后自动执行的命令
# 指定了CMD命令以后,docker container run命令就不能附加命令了
CMD node demos/01.js
创建image1
2
3
4$ docker image build -t test-demo:0.0.1 .
# -t imageName
# :Tag 标签一般用来表示版本号
# . 路径 . 代表当前路径
生成容器1
2
3
4
5$ docker container run -p 8000:3000 -it koa-demo /bin/bash
# -p 8000:3000 容器的 3000 端口映射到本机 8000 端口
# -it 容器的 Shell 映射到当前 Shell
# koa-demo image 名字
# /bin/bash 容器启动后,内部第一个执行的命令。这里是启动 Bash
创建 Nginx 服务器
1 | $ docker container run \ |
一般容器里的内容不能持久化,需要映射到本地的目录
填坑
- 推荐使用 PowerShell git的Shell 在执行 -ti 命令时会有问题。
- 在 windows 下 容器内的 webpack gulp等构建工具是监测不到文件变化的,Linux 可以,windows下是先虚拟了个 docker 然后 container 是再虚拟一层。
docker 的 image 文件在哪?
image 很空间,随便搞搞几个G就出去了。
在 windows 下其实是用 Hyper-V 虚拟的,所以只有一个文件,在以下目录中。
C:\Users\Public\Documents\Hyper-V\Virtual hard disks