Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
比如说我创建了一个docker conbainer,我可以在这个conbainer里面搭建我需要的任何环境,当我需要将这个环境整体进行迁移的时候,我就可以将这个conbainer导出快照,然后根据这个快照就可以创建镜像,再根据镜像去创建一个新的conbainer。那么这个新的conbainer就是完全复制了之前的conbainer。实现了非常方便的可移植性,迁移起来非常的方便。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
二、docker的架构:docker由三部分组成:
镜像(images)Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(conbainer)镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository)仓库可看成一个代码控制中心,用来保存镜像。
三、docker常用的命令记录1、获取镜像
docker pull 镜像名
2、创建并启动容器
docker run -itd --name 容器名 镜像名 /bin/bash -t 终端 -i 交互式的操作 -d 以后台的形式进行启动 -P 将容器内部使用的网络端口随机映射到我们使用的主机上。 --name 为运行的容器起一个名字 /bin/bash 放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
3、查看容器
查看所有的容器 docker ps -a 查看在运行的容器 docker ps
4、启动、关闭、重启容器
启动容器 docker start 容器id或者容器名 关闭容器 docker stop 容器id或者容器名 重启容器 docker restart 容器id或者容器名 docker start 和docker run的区别: docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start即可。docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。而docker start的作用是,重新启动已存在的镜像。也就是说,如果使用这个命令,我们必须事先知道这个容器的ID,或者这个容器的名字。
5、进入容器:
docker exec -it 容器名或容器id /bin/bash -it 交互终端式进入 /bin/bash 执行的命令
6、导入导出容器
导出容器 即为容器创建一个快照并导出 docker export 容器id或名字 > ./快照名.tar 导出容器 即将快照import成镜像保存在镜像仓库 cat ./快照名.tar | docker import - 镜像名:Tag名 此外,也可以通过指定 URL 或者某个目录来导入,例如: docker import http://example.com/exampleimage.tgz example/imagerepo 注:Tag就是当容器名称一样,可以用Tag来区别不同的镜像,例如mysql-ubuntu:v1 mysql-ubuntu:v2
7、删除容器
docker rm -f 容器id或容器名



