#################Docker###############
Docker:Linux容器,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。特性:文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次×××互shellDocker的内部构建,必须知道以下三种部件:Docker镜像 (Docker p_w_picpaths)。Docker注册处(Docker registeries)。Docker容器(Docker containers)。Docker镜像:是一个只读的模板。举个例子,一个镜像可以包含一个运行在Apache上的Web应用和其使用的redhat操作系统。镜像是用来创建容器的。Docker提供了简单的用来建立新的镜像或者升级现有的镜像,你也可以下载别人已经创建好的镜像。Docker镜像是Docker的构造部分。Docker注册处:用来保存镜像。可以理解为代码控制中的代码仓库。同样的,Docker仓库也有公有和私有的概念。公有的Docker仓库名字是Docker Hub。Docker Hub提供了庞大的镜像集合供使用。这些镜像可以是你自己创建的,或者你也可以在别人的镜像基础上创建。Docker容器:和文件夹很类似。一个Docker容器包含了所有的某个应用运行所需要的环境。每一个Docker容器都是从Docker镜像创建的。Docker容器可以运行、开始、停止、移动和删除。每一个Docker容器都是独立和安全的应用平台。Docker容器是Docker的运行部分。############docker的安装和启动###############添加本地docker安装源:(/etc/yum.repos.d/redhat.repo #rehat.repo在后面会用到)[docker]name=dockerbaseurl=http://content.example.com/rhel7.0/x86_64/rhtgpgcheck=0安装docker:# yum install -y docker关闭火墙:(docker需要在启动前关闭系统防火墙)# systemctl stop firewalld# systemctl disable firewalld启动docker:# systemctl start docker ; systemctl enable docker################查看docker信息################# docker version ##查看docker版本Client version: 0.11.1-devClient API version: 1.12Go version (client): go1.2.1Git commit (client): 02d20af/0.11.1# docker info ##显示docker系统的信息Containers: 0Images: 1Storage Driver: devicemapperPool Name: docker-253:1-33577528-pool##################加载平台镜像################下载镜像:# wget http://172.25.254.254/content/courses/rhce/rhel7.0/materials/rhel-server-docker-7.0-21.4-x86_64.tar.gz加载镜像:# docker load -i rhel-server-docker-7.0-21.4-x86_64.tar.gz列出镜像:# docker p_w_picpathsredhat/rhel7 0redhat/rhel7 0-21e1f5733f050be1f5733f050b7 months ago7 months ago140.2 MB140.2 MB...检索镜像# docker search p_w_picpath_name拉取镜像# docker pull p_w_picpath_name删除镜像# docker rm p_w_picpath_name显示一个镜像的历史# docker history p_w_picpath_name####################运行docker容器###################非交互式在容器中运行命令:(docker run ##创建一个新容器并运行)# docker run --rm rhel7 cat /etc/hosts ##--rm172.17.0.9e6f3be8f709d127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters交互式运行容器:# docker run -i -t rhel7 bash ##-i标准输入给容器 -t分配一个虚拟终端bash-4.2# echo hello > /tmp/testfilebash-4.2# exit# docker ps -a ##列出所有系统容器CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES508eef63bd67 redhat/rhel7:0 bash 4 minutes ago Exited (0) 25 seconds ago agitated_ritchie677ff9abff3735 redhat/rhel7:0 bash minutes ag silly_thompson8# docker ps ##列出当前正在运行的容器# docker ps -l ##列出最近一次启动的容器重启停止的容器:# docker start agitated_ritchie6bash-4.2# cat /tmp/testfilehellobash-4.2# exit删除所有容器# docker rm `docker ps -a -q`删除单个容器docker rm Name/ID停止、启动、杀死一个容器# docker stop Name/ID# docker start Name/ID# docker kill Name/ID从一个容器中取日志# docker logs Name/ID列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的# docker diff Name/ID显示一个运行的容器里面的进程信息# docker top Name/ID从容器里面拷贝文件/目录到本地一个路径# docker cp Name:/container_path to_path# docker cp ID:/container_path to_path重启一个正在运行的容器# docker restart Name/ID附加到一个运行的容器上面# docker attach ID提交一个新的p_w_picpath# docker commit ID new_p_w_picpath_name