Docker 第一次上手
Docker 第一次上手
引言
- DevOps/开发运维/不懂运维和部署的前端开发
- 项目实际需要,平稳升级构建工具
安装Docker
去看官网就好了
涉及的几个命令
- docker images

-
docker build
- -t 指定image的repository 和 tag, 这两项的含义可以看`docker images`命令之后的输出结果,在docker build时,可以同时指定多个`-t`选项
-
docker run
- -v 挂载宿主机目录/本地目录到镜像中
docker run
``` bash
docker run [options] image [command] [args]
```
构建镜像/ Dockerfile
先看看Dockerfile的一个示例:
``` dockerfile
指定当前镜像的基础镜像,下面这行指定当前以node:8-slim构建,这个镜像是官方仓库提供的,
FROM node:10-slim
指定镜像的工作目录
WORKDIR /usr/local/workdir
拷贝文件 将from拷贝到 /usr/local/workdir
COPY from /usr/local/workdir
构建镜像时,在镜像内执行的指令
RUN npm i -g . --registry=https://registry.npm.taobao.org/
指定在容器内运行的命令
CMD ["ls"]
```
除了上面示例中的几个常用指令,Dockerfile中还有下面这些:
- EXPOSE
- ENV
- ADD
- ENTRYPOINT
- VOLUME
- USER
- ONBUILD
关于如何写好一个Dockerfile的建议,可以参考[Best practices for writing Dockerfiles](https://docs.docker.com/devel..._best-practices/)
遇到的几个问题
1. 镜像中的文件不会被更改
`docker run`命令不会修改镜像中的文件,当下次执行`docker run`的时候,上次的结果不会保留。
2. 构建镜像会有缓存,
如果在构建过程中,某一步骤失败,则它前面的步骤会被缓存下下来。在下次重新构建时,这些步骤不再执行。

3. container 和 image的关系
image可以看作一个特定环境的文件的组合;image是静态的,可以在不同的机器和操作系统之间来回转移;
container则是这个环境的具体执行实例;contaier是动态的,跟当前环境密切相关;当某个机器启动一个image时,就产生了一个container。
「多图预警」完美实现一个@功能
wuwhs赞 40阅读 4.7k评论 5
安全地在前后端之间传输数据 - 「3」真的安全吗?
边城赞 31阅读 7.2k评论 5
涨姿势了,有意思的气泡 Loading 效果
chokcoco赞 20阅读 2.1k评论 2
在前端使用 JS 进行分类汇总
边城赞 17阅读 2k
【已结束】SegmentFault 思否写作挑战赛!
SegmentFault思否赞 20阅读 5.6k评论 10
过滤/筛选树节点
边城赞 18阅读 7.7k评论 3
你可能不需要JS!CSS实现一个计时器
XboxYan赞 21阅读 1.6k评论 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。