Docker笔记
原文 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 参考
一、环境配置的难题
当某个应用程序可以在某个机器上Run的时候,不代表在别的机器上也可以运行。可能会因为缺少配置文件等环境依赖而无法运行,配置环境会变得十分的麻烦。所以能不能根本上解决问题,软件可以带环境去安装,即安装该软件的时候把环境也一并复制过来。
二、虚拟机
虚拟机(virtual machine)就是带环境安装的一种解决方案。但是虚拟机启动慢,占用资源多,冗余步骤多。
三、Linux容器
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。启动快,占有资源小,体积小。
四、Docker
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
五、Docker安装
1.安装docker 可在官网安装。
2.通过 docker version 或者 docker info 查看是否安装成功。
3.把当前用户加入Docker用户组,否则有权限限制。
4.Docker 是服务器----客户端架构。命令行运行docker
命令的时候,需要本机有 Docker 服务。
六、Image镜像
Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。
image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
查看本机的所有image文件
docker image ls
七、实例 hello world
docker image pull library/hello-world
上面代码中,docker image pull
是抓取 image 文件的命令。library/hello-world
是 image 文件在仓库里面的位置,其中library
是 image 文件所在的组,hello-world
是 image 文件的名字。
docker container run
命令会从 image 文件,生成一个正在运行的容器实例。
docker container run hello-world
注意,docker container run
命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull
命令并不是必需的步骤.
八、容器文件
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
列出本机正在运行的容器
docker container ls
列出本机所有的容器,包括停止运行的容器
docker container ls -all
结束正在运行的容器,无法kill停止运行的容器,
docker container kill containerID
终止运行的容器文件,依然会占据硬盘空间。使用下面命令可以清除。
docker container rm containerID
九、Dockerfile文件
学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。
这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
十、docker数据卷
数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的,数据卷存在于宿主机的文件系统中,数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。
数据卷的特点:
1.容器启动的时候初始化的,如果容器使用的镜像包含了数据,这些数据也会拷贝到数据卷中。
2.容器对数据卷的修改是及时进行的。
3.数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响。
4.数据卷是宿主机中的一个目录,与容器生命周期隔离。