docker概述
容器技术已经成为应用程序封装和交付的核心技术容器技术的核心有以下几个内核组成CGroups-资源管理NamsSpace-进程管理SElinux-安全由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速docker是完整的一套容器管理系统,提供了一组命令,绕过用户更加方便直接的使用容器技术不需要过多关系底层内核技术优点:相对于传统的虚拟化技术,容器更加简洁高效,传统虚拟机需要给每个vm安装操作系统 容器使用共享库和程序缺点:容器的隔离性没有虚拟化强,共用Linux内核,安全性有先天缺陷 selinux难以驾驭,监控容器和容器排错是挑战docker基本概念镜像:在docker中容器是基于镜像启动的,镜像是启动容器的核心 镜像采用分层设计,使用快照的cow技术,确保底层数据不丢失 查看镜像用docker images ,官方提供的镜像仓库https://hub.docker.com镜像命令列表docker images(查看镜像列表)docker history(查看镜像制作历史)docker inspect(查看镜像详细信息)docker pull(下载镜像)docker push(上传镜像)docker rmi(删除本地镜像)docker save(镜像另存为tar包)docker load(使用tar包导入)docker search(搜素镜像)docker tag(修改镜像名称和标签)容器命令列表docker run(运行容器)docker ps(查看容器列表)docker start/stop/restart(启动/停止/重启容器)docker attach(进入容器)docker exec(进入容器)docker inspect(查看容器详细信息)docker top(查看容器进程列表)docker rm(删除容器)docker create -it centos(create创建一个容器而 不启动)docker安装(需要64位的操作系统,强烈推荐centos7以上的版本,关闭iptables)[root@x ~]# rpm -ivh docker-engine[root@x ~]# rpm -ivh docker-engine-selinux或者直接yum -y install docker[root@x ]# systemctl start docker(启动服务)[root@x ]# docker version (查看docker信息)Client: Version: 1.12.6 API version: 1.24 Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64 Go version: go1.8.3 Git commit: ec8512b/1.12.6 Built: Mon Dec 11 16:08:42 2017 OS/Arch: linux/amd64Server: Version: 1.12.6 API version: 1.24 Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64 Go version: go1.8.3 Git commit: ec8512b/1.12.6 Built: Mon Dec 11 16:08:42 2017 OS/Arch: linux/amd64镜像操作[root@x ]# docker search xx(搜索镜像)[root@x ]# docker pull xx(下载镜像)[root@x ]# docker push xx(上传镜像)[root@x ]# docker images(查看镜像库)[root@x ]# docker rmi xx(删除镜像)[root@x ~]# docker load < xx.tar(导入镜像,通过tar包文件导入镜像)[root@x ~]# docker save image_name > x.tar(导出镜像,将本地镜像到出为tar文件)容器操作[root@x ~]# docker run -itd centos(启动交互式容器,并在后台运行)[root@x ]# docker stop container id(停止容器)[root@x ]# docker rm container id(删除容器)[root@x~]# docker ps -a(查所有容器)[root@x~]# docker ps -l(查看在运行的容器)[root@x~]# docker attach container id bash(进入在运行的容器,退出是会关闭容器)[root@x~]# docker exec container id bash(进入在运行的容器,退出不会关闭容器,execl后面不加bash可能会报错)实例:[root@x docker]# docker pull docker.io/nginx[root@x docker]# docker pull docker.io/mysql/mysql-server[root@x docker]# docker pull docker.io/php[root@x docker]# docker pull docker.io/tomcat[root@x docker]# docker pull docker.io/centos[root@x ~]# docker run -itd centos(在后台运行)[root@x ~]# docker ps -a(查看信息)CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMEScfe74af0de3e centos "/bin/bash" 14 seconds ago Exited (0) 13 seconds ago sleepy_snyder[root@x ~]# docker attach cfe74af0de3e (进入容器)[root@x ~]# docker stop cfe74af0de3e(停止容器)cfe74af0de3e[root@x ~]# docker rm cfe74af0de3e(删除容器,正在运行的容器先停止在删除)cfe74af0de3e[root@x ~]# docker rm $(docker ps -qa)(容器太多时可以用脚本删除)