Docker 第一次上手

 Docker 第一次上手

 引言

  1. DevOps/开发运维/不懂运维和部署的前端开发
  2. 项目实际需要,平稳升级构建工具

 安装Docker

去看官网就好了

 涉及的几个命令

  1. docker images

    ![docker images](./assets/docker-images.jpg)

  2. docker build

    1. -t 指定image的repository 和 tag, 这两项的含义可以看`docker images`命令之后的输出结果,在docker build时,可以同时指定多个`-t`选项
  3. docker run

    1. -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. 构建镜像会有缓存,

如果在构建过程中,某一步骤失败,则它前面的步骤会被缓存下下来。在下次重新构建时,这些步骤不再执行。

![docker-build-cache](./assets/docker-build-cache.jpg)

 3. container 和 image的关系

image可以看作一个特定环境的文件的组合;image是静态的,可以在不同的机器和操作系统之间来回转移;

container则是这个环境的具体执行实例;contaier是动态的,跟当前环境密切相关;当某个机器启动一个image时,就产生了一个container。

前端大海里的小鱼

107 声望
3 粉丝
0 条评论
推荐阅读
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs40阅读 4.7k评论 5

封面图
安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城31阅读 7.2k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco20阅读 2.1k评论 2

在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 2k

封面图
【已结束】SegmentFault 思否写作挑战赛!
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑战,向更好的自己前进!

SegmentFault思否20阅读 5.6k评论 10

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.7k评论 3

封面图
你可能不需要JS!CSS实现一个计时器
CSS现在可不仅仅只是改一个颜色这么简单,还可以做很多交互,比如做一个功能齐全的计时器?样式上并不复杂,主要是几个交互的地方数字时钟的变化开始、暂停操作重置操作如何仅使用 CSS 来实现这样的功能呢?一起...

XboxYan21阅读 1.6k评论 1

封面图

前端大海里的小鱼

107 声望
3 粉丝
宣传栏