能够简单的认为docker容器是一个虚拟机,封装就是把这个虚拟机打包,打包后能在任何系统跑,docker装上即用。也能够形象的比喻成一个集装箱,把全部货物都打包好放到箱子里,不须要再分类运输,集装箱不互相影响node
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
镜像镜像只是一个虚拟的概念,且是分层存储的,其实际体现并不是由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。linux
1.镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 同样,镜像是静态的定义,容器是镜像运行时的实体。容器能够被建立、启动、中止、删除、暂停等。
2.容器的本质是进程,可是和宿主执行的进程不同,它有独立的命名空间,所以有本身的root文件系统,网络配置、进程空间
3.容器存储层的生存周期和容器同样,容器消亡时,容器存储层也随之消亡,所以任何保存于容器存储层的信息都会随容器删除而丢失。
注: Docker 最佳实践的要求nginx
1.容器不该该向其存储层内写入任何数据,容器存储层要保持无状态化。 2.全部的文件写入操做,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高 3.数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡
一个 Docker Registry 中能够包含多个仓库(Repository);每一个仓库能够包含多个标签(Tag);每一个标签对应一个镜像。git
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] docker pull ubuntu:16.04 docker run 运行容器的命令 docker run -it --rm \ ubuntu:16.04 \ bash -it: -i:交互式操做 -t:终端 咱们这里打算进入bash执行一些命令并查看返回结果,所以须要交互式终端 --rm:这个参数是说容器退出后随之将其删除 bash:放在镜像名后的是命令,这里咱们但愿有个交互式 Shell,所以用的是 bash。
docker image ls docker image ls -f dangling=true 虚悬镜像 docker image prune 删除虚悬镜像 docker image ls -a 中间层镜像 docker image ls ubuntu 列出部分镜像 docker image ls -f since=mongo:3.2 docker image ls -f before=mongo:3.2
docker image rm [选项] <镜像1> [<镜像2> ...] docker image rm ID docker image rm 镜像名 docker image rm 摘要 docker rmi 镜像名
FROM 指定基础镜像 RUN 执行命令 构建镜像 docker build -t nginx:v3 .
COPY package.json /usr/src/app/
Add 比COPY多了些特性,好比 <源路径> 能够是一个 URLgithub
CMD echo $HOME CMD [ "sh", "-c", "echo $HOME" ]
ENV NODE_VERSION 7.2.0 或者ENV NODE_VERSION=7.2.0 好比使用: RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION
$ docker container run \ -d \ -p 127.0.0.2:8080:80 \ --rm \ --name mynginx \ nginx
docker container start
docker stop ID
docker attach ID /exit 会致使容器退出 docker exec -it ID /exit 不会致使容器退出
linux安装docker
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
卸载shell
$ sudo rm /usr/local/bin/docker-compose
docker-compose up docker-compose down docker-compose --version