reference
Basis
概念
-
镜像 容器
一个镜像可以创造很多个容器
可以把容器看作是一个简易版的linux实例 -
仓库 ( Repository )和仓库注册服务器(Registry)
Registry上面放着很多个Repository ,每个Repository 又放了很多镜像,每个镜像有不同的标签 -
仓库又分为公开仓库(Public)和私有仓库(Private)
最大的公开仓库的是Docker Hub( hub.docker.com)
不过一般用的是国内的 阿里和网易之类的
基本命令
-
service docker restart 如果是通过软件包安装,可以用Upstart查看情况
虚拟机启动是分种级的 docker是秒级的
-
docker deamon cmd 操作服务端
-
docker cmd 操作客户端
- docker run hello-world # 运行hello-world镜像的一个容器
现在本地找 没有的话 会主动去仓库拉
- docker run hello-world # 运行hello-world镜像的一个容器
DockerFile
- WORKDIR 指定pwd并可多次切换 (命令中-w参数可覆盖)
- ENV 设定环境变量(命令中-e参数可补充环境变量)
- CMD 与 ENTRYPOINT
- 都只能有一行,都建议用数组形式来实现,否则默认在命令前面加上bash -c,容易出现意料之外的状况
- 都可以被docker run 的外部命令中的参数/命令覆盖
-
docker run -ti ubuntu:12.04 /bin/bash
这里的/bin/bash 覆盖的就是CMD
-
docker run -ti ubuntu:12.04 --entrypoint=["/bin/bash"] 覆盖的就是ENTRYPOINT
-
当CMD和ENTRYPOINT同时存在的时候的用法:ENTRYPOINT在前,CMD在后且只添加默认参数
ENTRYPOINT ["/usr/sbin/nginx"] CMD ["-h"]
-
- COPY、ADD区别
- 后者参数可以为网址,且add 压缩文件到目标路径的时候会自动提取
- ARG指令 设置可选/必选参数
- VOLUME
- 是否会修改宿主机文件,可以参考这个blog,写的很全面(从理由到措施)
- 推荐挂载目录,不要挂载文件。挂载目录不会出现宿主机文件更新,而容器中文件没有更新。
- 或者echo 修改文件,而不是使用 vim 或者 vi
- 是否会修改宿主机文件,可以参考这个blog,写的很全面(从理由到措施)
- LABEL作用
镜像
看到refer8:44
docker run hello-world # 运行hello-world镜像的一个容器
现在本地找 没有的话 会主动去仓库拉
- docker images # 查看本地有什么镜像 默认tag是latest
-a 显示内嵌的所有层次
-q 只显示id
–digest 显示摘要
–no-trunc 没有截取 显示完整信息