首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker 小记—Docker Engine

前言

用了 Docker 方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker 详细说明可查阅“官方文档”。本篇为 Docker Engine 的笔记,也就是我们通常说的 Docker,他包含了提供容器技术实现的 Docker daemon 及终端控制 Docker CLI 的应用程序。后续会继续发布 Docker Compose 和 Docker Swarm 的操作笔记,由于我的绝大部分应用案例都是云服务器,因此 Docker Machine 就略过了。

1. Docker 安装 & 配置镜像加速器

a:

b:

2. Dockerfile 详解

Docker 的架构很有魅力,他拥有类似于虚拟机性质的隔离机制,但并不是严格意义上的虚拟机。我还是喜欢拿货轮举例,以前我们是一条小船运一个集装箱的货物,现在可以把 N 个集装箱扔到一条大货轮上。每个容器(集装箱)共用宿主机(货轮)的内核(运载力),Dockerfile 就像是每个集装箱中的货物清单和说明书,一般由以下五部分构成:

2.1 基础指令

FROM:指定基础镜像,且必须位于第一行,使用格式如下:

Docker 的原理基于 Linux 内核的隔离技术,且 Linux From Scratch,因此 是 docker 中最基础的镜像,debian、ubuntu 和 centos 等都基于 scratch 之上。在实际的运用中,如果必须从零开始搭建镜像的一般都选择 作为基础镜像,不过大多数情况下一般都会以如下: 、 、 等为基础镜像。

MAINTAINER:指定维护者信息,例: 。

2.2 控制指令

RUN:在构建的过程中指定需要被执行的命令,使用格式如下:

WORKDIR:用于切换构建过程中的工作目录,例: 。可配合环境变量使用,例:

ONBUILD: 在当前镜像被当做基础镜像时,执行其携带指令,例:

“hello world”会在子镜像被构建的过程中输出。

2.3 引入指令

COPY:拷贝文件或目录,格式:

ADD:在COPY的基础之上,ADD可识别压缩文件,例: 。理论上也可添加网络地址,但还是建议在 RUN 指令中执行 wget 或 curl 命令,感觉这样更加可控。实际应用中我喜欢将 COPY 用于文件,ADD 用于目录(仅我个人的使用习惯)。

2.4 执行指令

CMD:容器启动时需要执行的命令,格式:

若在 docker run 中指定启动命令,则 CMD 将被覆盖。

ENTRYPOINT:主程序启动前的准备指令,用于启动主程序所依赖的服务,格式同CMD(基本上没用过就不介绍了,而且容易出错,不推荐使用)。

2.5 配置指令

EXPOSE: 暴露容器端口,格式: ,注意此处的暴露端口和docker run 中-p指定的映射端口是两个概念。

ENV: 声明环境变量,格式: 。

LABEL: 标记,格式: 。

USER: 设置启动容器的用户,格式: 。

ARG: 设置变量,格式同ENV。

STOPSIGNAL: 容器停止时给应用程序发出的信号,例: 。

SHELL: 指定shell,例: 。

3. Docker 命令详解

为了避免喧宾夺主,此处仅摘录我个人操作中较为常用的命令。

3.1 生命周期管理

run:创建并运行容器,格式: ,参数说明:

docker run 的参数甚多,可通过 查询,后续这些复杂的配置都会移交给 Docker Compose,以上几个足以应用70%\~80%的场景,例:

start/stop/restart: 。

rm:移除容器,格式: ,参数说明:

exec:在运行的容器中执行命令,不过更常用的还是先进入容器再执行命令,例子: 。

3.2 容器操作

ps:列出容器,常用: ,参数说明:all、n last(最新 n 个容器)、quiet(只显示容器编号)。

top:查看容器中的进程信息,例: 。

logs:查看容器日志,常用: ,参数说明:follow、--tail n(最新条日志)。

port:查看端口映射情况,例: 。

3.3 镜像仓库

login/logout:镜像仓库的登录和退出,格式:

如果是Docker Hub,则示例如下:

在生产环境中,我们一般会选择使用云厂商的镜像仓库,例:

pull:拉取镜像,最常用的命令之一,格式: 。

push:上传镜像,格式: 。

3.4 本地镜像管理

images:列出本地镜像,常用 ,参数说明:quiet(只显示image Id)。

rmi:删除本地镜像,常用 ,参数说明:force。

tag:标记镜像,归入仓库,格式: ,例: 。

build:使用Dockerfile创建镜像,格式: ,参数说明:-t tag 例: 。

结语

静夜听钟却念念不安,举首相望,恐知者唯灯而~ 哀哉!整理至此,小弟拙笔盼君悦之。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180429G02OBE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券