正因为容器的这些轻,快的特点,所以容器技术右叫做“轻量虚拟化”技术,在很多场合下,容器技术比传统虚拟化技术更有优势。
泊坞窗之前的各种容器技术,最大问题是使用起来不方便,只有少数技术高手才能熟练应用。而泊坞窗的最大优势就是让容器的管理变得极其方便,不需要掌握高深的技术就能使用。
每个泊坞容器运行在独立的虚拟环境中,虚拟环境包括多个方面,其中最重要的就是独立的文件系统;在这个文件系统的读写操作,即不影响宿主机的文件系统,也不影响其他容器的文件系统。
Docker镜像是一个比较复杂的概念,现阶段,我们可以简单地把Docker镜像理解成一个目录。Docker Server在启动容器的时候,先根据这个镜像目录,复制出一个新的目录,然后在容器进程启动时,让这个进程chroot到这个新的目录下。这样,这个目录就成了这个容器的根文件系统(rootfs)。
Tips: 在宿主机中使用chroot aufs/mnt/容器编号 可以进入容器的文件系统
通过docker images指令来查看本地有哪些镜像
Docker刚安装完,本地Registry是空的。因此我们需要从Docker官方Registry来拉取镜像。docker pull命令用于从官方Registry拉取镜像。
如果从Docker官方Registry拉取镜像的速度很慢,可以尝试daocloud提供的加速器服务。https://dashboard.daocloud.io/mirror有详细使用方法介绍。
docker run命令用于运行容器。
docker run是最常用也是最复杂的命令,通过docker help run我们可以看到该命令有很多选项,其中最常用的选项包括:
容器运行成功后,会返回一个64字符的容器ID,作为容器的唯一标识。类似于镜像ID,容器ID也可以采用简写形式。
通过如下命令来运行一个交互式容器:
sudo docker run -it centos:6 /bin/bash
通过如上的命令,我们启动了新的shell,并运行在容器环境中。由于是一个交互式容器,所有我们会离开当前的shell,被这个新的shell带入到容器的虚拟世界中,此后我们在这个shell里面执行的任何命令,都是相对于这个虚拟世界的。
当我们在新的shell里面执行exit,就结束了这个bash进程,从而也结束了这个容器,我们从虚拟世界又返回到宿主机的现实世界。
交互式容器适合一些临时性的任务,当退出bash的时候,交互式容器的生命也就结束了。大多数场合下,我们需要的是守护式容器。
sudo docker run -d redis
没有指定命令,那么会使用镜像所提供的默认命令。redis镜像的默认命令是/entrypoint.sh redis-server
守护式容器运行在后台,这样我们就可以继续留在当前shell中进行其他操作。
sudo docker ps 查看运行中的容器
Tips : 在上述命令后加上-a ,可以查看所有运行过的容器,包括已经退出的。
docker ps命令只能查看容器的基本信息;
sudo docker inspect [ID]
docker inspect返回的信息是JSON格式的,非常丰富。有时候我们需要获取这些信息来进行二次开发。
docker inspect -f 则可以指定查看某种信息,例如查看容器的IP地址:
sudo docker inspect -f '{{.NetworkSettings.IPAddress}}' [ID]
sudo docker stop [ID]
sudo docker rm [ID]
Tips:容器停止后,并不会被自动删除
删除完之后再运行docker ps -a,会发现容器已经消失了
目前Docker已可以安装到绝大多数Linux发行版上,包括Ubuntu、CentOS、Redhat等,也可以安装到苹果Mac OS上。
需要注意的是,目前Docker只支持64位操作系统。
在Ubuntu系统上通过apt-get命令来安装软件
Ubuntu官方软件仓库提供了Docker的稳定版,通过如下步骤进行安装:
泊坞窗是一个经典的CS架构:
实验描述:
本实验模拟了需要两个机器,分别运行客户端和服务端程序的场景
实验步骤:
什么是多克?
什么是容器?
如何安装泊坞窗?
泊坞窗镜像和镜像仓库。
泊坞窗容器的创建,删除,停止,查看等基本命令。