docker 是一个特殊的文件系统
docker 容器和镜像都采用分层存储
镜像是静态的定义,容器时运行的实体
容器是以镜像为基础,在其基础上创建一个当前容器的存储层
一个 Docker Registry 中可以包含多个仓库,每个仓库可以包含多个标签,每个标签对应一个镜像
docker pull [选项] [Docker Registry 地址[:端口号/]<用户名>/<软件名>[:标签]
docker run
-i: 交互式操作
-t: 终端
–rm: 容器退出后随之将其删除
镜像ID是镜像的唯一标识,一个镜像可以对应多个标签
docker image ls
docker image ls -a
docker image ls ubuntu
docker system df
docker image rm [选项] <镜像1> [<镜像2> …]
docker diff xxx
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit
–author “yzj”
–message “修改了网页”
xxx
xxx:xx
docker history xxx:xx
把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像
Dockerfile是一个文本文件,包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
镜像是多层存储,每一层的东西并不会在下一层被删除,会一直跟随着镜像
docker build -t nginx:v3 .
镜像构建上下文
COPY 指令从构建上下目录中 <源路径> 的文件/目录复制到新的一层镜像内的 <目标路径> 位置,源文件的各种元数据都会保留
COPY package.json /usr/src/app/
ADD指令自动解压源压缩文件到 <目标路径> 中去
CMD 指令用于指定默认的容器主进程的启动命令的
CMD [ “sh”, “-c”, “echo $HOME” ]
ENV 设置环境变量
ENV VERSION=1.0 DEBUG=on
NAME=“Happy Feet”
WORKDIR 指令指定工作目录,如果使用的是相对路径,那么所切换的路径和之前的 WORKDIR 有关
docker run -it ubuntu:18.04 /bin/bash
1检查本地是否存在指定的镜像,不存在就从 registry 下载
2用镜像创建并启动一个容器
3分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
5从地址池配置一个 ip 地址给容器
6执行用户指定的应用程序
7执行完毕后容器被终止
docker container start 直接将一个已经终止的容器启动运行
docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; done”
docker container ls
docker container ls -a
docker container logs
docker container restart



