乐趣区

关于docker: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。

退出移动版